edfcore 0.6.194 → 0.6.196
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/dist/chunks.d.ts.map +1 -1
- package/dist/chunks.js +28 -0
- package/dist/chunks.js.map +1 -1
- package/dist/constants.d.ts +1 -1
- package/dist/constants.js +1 -1
- package/dist/format-report.d.ts.map +1 -1
- package/dist/format-report.js +31 -0
- package/dist/format-report.js.map +1 -1
- package/docs/CHANGELOG.md +29 -0
- package/package.json +1 -1
- package/src/chunks.ts +31 -0
- package/src/constants.ts +1 -1
- package/src/format-report.ts +34 -0
package/dist/chunks.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chunks.d.ts","sourceRoot":"","sources":["../src/chunks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAMH,OAAO,KAAK,EAAE,QAAQ,EAAiC,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"chunks.d.ts","sourceRoot":"","sources":["../src/chunks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAMH,OAAO,KAAK,EAAE,QAAQ,EAAiC,MAAM,YAAY,CAAC;AA+L1E;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,SAAS,QAAQ,EAAE,GAAG,QAAQ,CAmGjE"}
|
package/dist/chunks.js
CHANGED
|
@@ -135,6 +135,34 @@ function assertJoinable(previous, next, index) {
|
|
|
135
135
|
' Either the index was never scanned, or these chunks came from separate reads. Next: ' +
|
|
136
136
|
'await buildRecordIndex(recording) and merge each contiguous run separately.');
|
|
137
137
|
}
|
|
138
|
+
/*
|
|
139
|
+
* And that the two chunks came from the SAME FILE, which nothing above can see.
|
|
140
|
+
*
|
|
141
|
+
* Every test so far is about time and record numbers, and those are properties a second recording
|
|
142
|
+
* can satisfy exactly: two files of the same geometry, read at adjacent record ranges, pass the
|
|
143
|
+
* gap test, the record test, the tick test and the per-signal sample test. The result is one array
|
|
144
|
+
* holding half of one recording and half of another, with `records` and `durationSeconds` claiming
|
|
145
|
+
* it is a single run — which is worse than the gap this function exists to refuse, and reported
|
|
146
|
+
* even less.
|
|
147
|
+
*
|
|
148
|
+
* `byteOffset` and `byteLength` are the two fields that know where the samples came from. Within
|
|
149
|
+
* one recording they are fixed by the record range — `headerByteLength + start * recordByteLength`
|
|
150
|
+
* and `count * recordByteLength` — so record-adjacent chunks are byte-adjacent as well, at every
|
|
151
|
+
* chunk size and after a merge. When they are not, the two chunks were read from files whose
|
|
152
|
+
* header or record sizes differ, and no arrangement of records makes that one file.
|
|
153
|
+
*
|
|
154
|
+
* It does NOT catch two files of identical geometry: nothing on `EdfChunk` identifies a recording,
|
|
155
|
+
* so that pair stays indistinguishable. This closes the case where the files differ at all, which
|
|
156
|
+
* is the usual one — a different channel count is a different record size.
|
|
157
|
+
*/
|
|
158
|
+
const expectedByteOffset = previous.byteOffset + previous.byteLength;
|
|
159
|
+
if (next.byteOffset !== expectedByteOffset) {
|
|
160
|
+
throw new RangeError(`mergeChunks: chunk ${index} begins at byte ${next.byteOffset}, but the chunk before it ` +
|
|
161
|
+
`ends at ${expectedByteOffset}. Within one recording a record range fixes both numbers, so ` +
|
|
162
|
+
'these two were read from files whose headers or records are different sizes — different ' +
|
|
163
|
+
"recordings. Concatenating them would put one file's samples after another's in an array " +
|
|
164
|
+
'that says it is one run. Next: merge the chunks of each recording separately.');
|
|
165
|
+
}
|
|
138
166
|
if (next.signals.length !== previous.signals.length) {
|
|
139
167
|
throw new RangeError(`mergeChunks: chunk ${index} carries ${pluralise(next.signals.length, 'signal')}, the chunk ` +
|
|
140
168
|
`before it ` +
|
package/dist/chunks.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chunks.js","sourceRoot":"","sources":["../src/chunks.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"chunks.js","sourceRoot":"","sources":["../src/chunks.ts"],"names":[],"mappings":"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"}
|
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.6.
|
|
112
|
+
export declare const VERSION = "0.6.196";
|
|
113
113
|
//# sourceMappingURL=constants.d.ts.map
|
package/dist/constants.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format-report.d.ts","sourceRoot":"","sources":["../src/format-report.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAOH,OAAO,KAAK,EAAE,SAAS,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAKnF;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,gBAAgB,EACxB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,MAAM,
|
|
1
|
+
{"version":3,"file":"format-report.d.ts","sourceRoot":"","sources":["../src/format-report.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAOH,OAAO,KAAK,EAAE,SAAS,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAKnF;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,gBAAgB,EACxB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,MAAM,CAoLR;AAED,qFAAqF;AACrF,YAAY,EAAE,SAAS,EAAE,CAAC"}
|
package/dist/format-report.js
CHANGED
|
@@ -65,6 +65,37 @@ export function formatValidationReport(report, options) {
|
|
|
65
65
|
'formatHeader(inspection.header).');
|
|
66
66
|
}
|
|
67
67
|
const lines = [];
|
|
68
|
+
/*
|
|
69
|
+
* The HEADER option, before a signal is taken out of it.
|
|
70
|
+
*
|
|
71
|
+
* It is the one field on these options that is an object, and the recording is what a caller
|
|
72
|
+
* holds — `formatValidationReport(report, { header: recording })` is one field short of the call
|
|
73
|
+
* above it, `validateRecording(recording)`. Nothing checked it: the first argument has been
|
|
74
|
+
* guarded since 0.6.113 and the options object since `assertOptions`, and the object inside them
|
|
75
|
+
* was not.
|
|
76
|
+
*
|
|
77
|
+
* It only shows up once the report has SIGNAL STATS, because that is the only block this names
|
|
78
|
+
* signals in — so a sweep with `scanSamples` off printed fine and the same call with it on threw
|
|
79
|
+
* V8's `Cannot read properties of undefined (reading '0')` from `header.signals[…]`, or, for a
|
|
80
|
+
* chunk, `text is not iterable` from `printable`. Whether it failed at all depended on how much
|
|
81
|
+
* of the file had been read.
|
|
82
|
+
*
|
|
83
|
+
* The option's whole job is the difference between `EEG Fpz-Cz` and `signal 0`, so it is also the
|
|
84
|
+
* one a caller adds last, to a call that already worked.
|
|
85
|
+
*/
|
|
86
|
+
if (options?.header !== undefined) {
|
|
87
|
+
// Being an array is not the test; being an array of the RIGHT signals is — a chunk carries one
|
|
88
|
+
// too, and its entries have no `label` for a row to be named with. That is the rule 0.6.183 and
|
|
89
|
+
// 0.6.186 settled for the lookups and for `trimToWindow`.
|
|
90
|
+
const signals = options.header?.signals;
|
|
91
|
+
const named = Array.isArray(signals) &&
|
|
92
|
+
(signals.length === 0 || typeof signals[0]?.label === 'string');
|
|
93
|
+
if (!named) {
|
|
94
|
+
throw new RangeError('formatValidationReport(): options.header is not a header — nothing on it carries the ' +
|
|
95
|
+
'labels this names the rows with, which is all this option does. Next: pass ' +
|
|
96
|
+
'recording.header, or omit it and the rows read `signal 0`.');
|
|
97
|
+
}
|
|
98
|
+
}
|
|
68
99
|
const header = options?.header;
|
|
69
100
|
// Before anything is rendered, and outside the `diagnostics.length > 0` branch below. A report
|
|
70
101
|
// that passes still has to report a misspelled `redactFields`: the typo belongs to the call, and
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format-report.js","sourceRoot":"","sources":["../src/format-report.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"format-report.js","sourceRoot":"","sources":["../src/format-report.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACpF,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAGhD,+EAA+E;AAC/E,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAE7B;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CACpC,MAAwB,EACxB,OAA6B;IAE7B;;;;;;;;;OASG;IACH,MAAM,KAAK,GAAG,MAAoE,CAAC;IACnF,IAAI,OAAO,KAAK,EAAE,EAAE,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;QACxE,MAAM,IAAI,UAAU,CAClB,oFAAoF;YAClF,0FAA0F;YAC1F,kFAAkF;YAClF,cAAc,CACjB,CAAC;IACJ,CAAC;IACD;;;;;;;;;;;;;OAaG;IACH,IAAI,OAAQ,KAAsC,CAAC,cAAc,KAAK,QAAQ,EAAE,CAAC;QAC/E,MAAM,IAAI,UAAU,CAClB,0FAA0F;YACxF,0FAA0F;YAC1F,qFAAqF;YACrF,wEAAwE;YACxE,kCAAkC,CACrC,CAAC;IACJ,CAAC;IACD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B;;;;;;;;;;;;;;;;;OAiBG;IACH,IAAI,OAAO,EAAE,MAAM,KAAK,SAAS,EAAE,CAAC;QAClC,+FAA+F;QAC/F,gGAAgG;QAChG,0DAA0D;QAC1D,MAAM,OAAO,GAAI,OAAO,CAAC,MAAgC,EAAE,OAAkB,CAAC;QAC9E,MAAM,KAAK,GACT,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;YACtB,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAQ,OAAO,CAAC,CAAC,CAAyB,EAAE,KAAK,KAAK,QAAQ,CAAC,CAAC;QAC3F,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,UAAU,CAClB,uFAAuF;gBACrF,6EAA6E;gBAC7E,4DAA4D,CAC/D,CAAC;QACJ,CAAC;IACH,CAAC;IACD,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,CAAC;IAE/B,+FAA+F;IAC/F,iGAAiG;IACjG,0DAA0D;IAC1D,aAAa,CAAC,OAAO,EAAE,wBAAwB,EAAE,YAAY,CAAC,CAAC;IAC/D,sBAAsB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IAE9C,8EAA8E;IAC9E,MAAM,OAAO,GAAG,oBAAoB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAEzD,MAAM,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;IAC5C,MAAM,UAAU,GACd,OAAO,CAAC,KAAK,KAAK,CAAC;QACjB,CAAC,CAAC,gBAAgB;QAClB,CAAC,CACG;YACE,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC;YACzB,CAAC,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAC;YAC7B,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC;SAE1B;aACE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC;YAC/B,qFAAqF;YACrF,4DAA4D;YAC5D,oFAAoF;YACpF,oFAAoF;YACpF,wFAAwF;aACvF,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;aACtD,IAAI,CAAC,IAAI,CAAC,CAAC;IACpB,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,MAAM,UAAU,EAAE,CAAC,CAAC;IACzC,KAAK,CAAC,IAAI,CACR,WAAW,SAAS,CAAC,MAAM,CAAC,cAAc,EAAE,QAAQ,CAAC,IAAI;QACvD,QAAQ,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,CACzF,CAAC;IAEF,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACvB,gFAAgF;QAChF,KAAK,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YAC7C,KAAK,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QACtC;;;;;;;;;;;;;WAaG;QACH,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YAC5C,MAAM,MAAM,GAAG,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YAClD,wFAAwF;YACxF,0FAA0F;YAC1F,wFAAwF;YACxF,MAAM,IAAI,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5F,OAAO;gBACL,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;gBAClC,KAAK,EAAE,GAAG,KAAK,CAAC,kBAAkB,KAAK,KAAK,CAAC,kBAAkB,EAAE;gBACjE,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,cAAc,CAAC,OAAO,CAAC;gBAChD,IAAI,EAAE,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,WAAW,CAAC;gBACzC,QAAQ,EACN,KAAK,CAAC,sBAAsB,GAAG,CAAC;oBAC9B,CAAC,CAAC,KAAK,KAAK,CAAC,sBAAsB,6BAA6B;oBAChE,CAAC,CAAC,EAAE;aACT,CAAC;QACJ,CAAC,CAAC,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;QACpE,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;QAEpE,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,KAAK,CAAC,IAAI,CACR,KAAK,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG;gBACpF,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,QAAQ,EAAE,CAC/B,CAAC;QACJ,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClC,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ,IAAI,iBAAiB,CAAC;QACxD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CACR,iBAAiB,CAAC,MAAM,CAAC,WAAW,EAAE;YACpC,QAAQ;YACR,GAAG,CAAC,OAAO,EAAE,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC;SACvF,CAAC,CACH,CAAC;IACJ,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
|
package/docs/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,35 @@ 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.6.196
|
|
10
|
+
|
|
11
|
+
- **Fixed** `mergeChunks` joining chunks from two different recordings. Every test it applied was
|
|
12
|
+
about time and record numbers, and a second file satisfies all of them: same record duration,
|
|
13
|
+
adjacent record ranges, and the gap, record, tick and per-signal sample checks all pass. The result
|
|
14
|
+
was one array holding half of one recording and half of another, with `records` and
|
|
15
|
+
`durationSeconds` claiming a single run.
|
|
16
|
+
- That is worse than the gap this function exists to refuse — its docblock rejects concatenating
|
|
17
|
+
across five minutes because "nothing in the result says so" — and it was reported even less.
|
|
18
|
+
- `byteOffset` and `byteLength` are the two fields that know where the samples came from. Within one
|
|
19
|
+
recording the record range fixes both, so record-adjacent chunks are byte-adjacent at every chunk
|
|
20
|
+
size and after a merge; when they are not, the files' headers or records are different sizes.
|
|
21
|
+
- It does not catch two files of identical geometry, and nothing on `EdfChunk` could — no field
|
|
22
|
+
identifies a recording. That limit is pinned in the tests rather than assumed.
|
|
23
|
+
|
|
24
|
+
## 0.6.195
|
|
25
|
+
|
|
26
|
+
- **Fixed** `formatValidationReport`'s `header` option going unchecked. It is the one field on these
|
|
27
|
+
options that is an object, and the recording is what a caller holds — the line above is
|
|
28
|
+
`validateRecording(recording)` — so `{ header: recording }` is one field short of it. The first
|
|
29
|
+
argument has been guarded since 0.6.113 and the options object since `assertOptions`; the object
|
|
30
|
+
inside them was not.
|
|
31
|
+
- It only failed once the report had signal statistics, because that is the only block this names
|
|
32
|
+
signals in. The same call printed fine with `scanSamples` off and threw V8's `Cannot read
|
|
33
|
+
properties of undefined (reading '0')` with it on — so whether the mistake surfaced depended on how
|
|
34
|
+
much of the file had been read.
|
|
35
|
+
- Being an array is not the test; carrying labels is. A chunk has a `signals` array too, and its
|
|
36
|
+
entries have no `label` for a row to be named with — the rule 0.6.183 and 0.6.186 settled.
|
|
37
|
+
|
|
9
38
|
## 0.6.194
|
|
10
39
|
|
|
11
40
|
- **Fixed** `physicalRangeOf` returning a range for the annotations channel. It returned
|
package/package.json
CHANGED
package/src/chunks.ts
CHANGED
|
@@ -154,6 +154,37 @@ function assertJoinable(previous: EdfChunk, next: EdfChunk, index: number): void
|
|
|
154
154
|
);
|
|
155
155
|
}
|
|
156
156
|
|
|
157
|
+
/*
|
|
158
|
+
* And that the two chunks came from the SAME FILE, which nothing above can see.
|
|
159
|
+
*
|
|
160
|
+
* Every test so far is about time and record numbers, and those are properties a second recording
|
|
161
|
+
* can satisfy exactly: two files of the same geometry, read at adjacent record ranges, pass the
|
|
162
|
+
* gap test, the record test, the tick test and the per-signal sample test. The result is one array
|
|
163
|
+
* holding half of one recording and half of another, with `records` and `durationSeconds` claiming
|
|
164
|
+
* it is a single run — which is worse than the gap this function exists to refuse, and reported
|
|
165
|
+
* even less.
|
|
166
|
+
*
|
|
167
|
+
* `byteOffset` and `byteLength` are the two fields that know where the samples came from. Within
|
|
168
|
+
* one recording they are fixed by the record range — `headerByteLength + start * recordByteLength`
|
|
169
|
+
* and `count * recordByteLength` — so record-adjacent chunks are byte-adjacent as well, at every
|
|
170
|
+
* chunk size and after a merge. When they are not, the two chunks were read from files whose
|
|
171
|
+
* header or record sizes differ, and no arrangement of records makes that one file.
|
|
172
|
+
*
|
|
173
|
+
* It does NOT catch two files of identical geometry: nothing on `EdfChunk` identifies a recording,
|
|
174
|
+
* so that pair stays indistinguishable. This closes the case where the files differ at all, which
|
|
175
|
+
* is the usual one — a different channel count is a different record size.
|
|
176
|
+
*/
|
|
177
|
+
const expectedByteOffset = previous.byteOffset + previous.byteLength;
|
|
178
|
+
if (next.byteOffset !== expectedByteOffset) {
|
|
179
|
+
throw new RangeError(
|
|
180
|
+
`mergeChunks: chunk ${index} begins at byte ${next.byteOffset}, but the chunk before it ` +
|
|
181
|
+
`ends at ${expectedByteOffset}. Within one recording a record range fixes both numbers, so ` +
|
|
182
|
+
'these two were read from files whose headers or records are different sizes — different ' +
|
|
183
|
+
"recordings. Concatenating them would put one file's samples after another's in an array " +
|
|
184
|
+
'that says it is one run. Next: merge the chunks of each recording separately.',
|
|
185
|
+
);
|
|
186
|
+
}
|
|
187
|
+
|
|
157
188
|
if (next.signals.length !== previous.signals.length) {
|
|
158
189
|
throw new RangeError(
|
|
159
190
|
`mergeChunks: chunk ${index} carries ${pluralise(next.signals.length, 'signal')}, the chunk ` +
|
package/src/constants.ts
CHANGED
package/src/format-report.ts
CHANGED
|
@@ -76,6 +76,40 @@ export function formatValidationReport(
|
|
|
76
76
|
);
|
|
77
77
|
}
|
|
78
78
|
const lines: string[] = [];
|
|
79
|
+
/*
|
|
80
|
+
* The HEADER option, before a signal is taken out of it.
|
|
81
|
+
*
|
|
82
|
+
* It is the one field on these options that is an object, and the recording is what a caller
|
|
83
|
+
* holds — `formatValidationReport(report, { header: recording })` is one field short of the call
|
|
84
|
+
* above it, `validateRecording(recording)`. Nothing checked it: the first argument has been
|
|
85
|
+
* guarded since 0.6.113 and the options object since `assertOptions`, and the object inside them
|
|
86
|
+
* was not.
|
|
87
|
+
*
|
|
88
|
+
* It only shows up once the report has SIGNAL STATS, because that is the only block this names
|
|
89
|
+
* signals in — so a sweep with `scanSamples` off printed fine and the same call with it on threw
|
|
90
|
+
* V8's `Cannot read properties of undefined (reading '0')` from `header.signals[…]`, or, for a
|
|
91
|
+
* chunk, `text is not iterable` from `printable`. Whether it failed at all depended on how much
|
|
92
|
+
* of the file had been read.
|
|
93
|
+
*
|
|
94
|
+
* The option's whole job is the difference between `EEG Fpz-Cz` and `signal 0`, so it is also the
|
|
95
|
+
* one a caller adds last, to a call that already worked.
|
|
96
|
+
*/
|
|
97
|
+
if (options?.header !== undefined) {
|
|
98
|
+
// Being an array is not the test; being an array of the RIGHT signals is — a chunk carries one
|
|
99
|
+
// too, and its entries have no `label` for a row to be named with. That is the rule 0.6.183 and
|
|
100
|
+
// 0.6.186 settled for the lookups and for `trimToWindow`.
|
|
101
|
+
const signals = (options.header as EdfHeader | undefined)?.signals as unknown;
|
|
102
|
+
const named =
|
|
103
|
+
Array.isArray(signals) &&
|
|
104
|
+
(signals.length === 0 || typeof (signals[0] as { label?: unknown })?.label === 'string');
|
|
105
|
+
if (!named) {
|
|
106
|
+
throw new RangeError(
|
|
107
|
+
'formatValidationReport(): options.header is not a header — nothing on it carries the ' +
|
|
108
|
+
'labels this names the rows with, which is all this option does. Next: pass ' +
|
|
109
|
+
'recording.header, or omit it and the rows read `signal 0`.',
|
|
110
|
+
);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
79
113
|
const header = options?.header;
|
|
80
114
|
|
|
81
115
|
// Before anything is rendered, and outside the `diagnostics.length > 0` branch below. A report
|