edfcore 0.2.56 → 0.2.58
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 +31 -0
- package/README.md +28 -3
- package/dist/constants.d.ts +1 -1
- package/dist/constants.js +1 -1
- package/package.json +1 -1
- package/src/constants.ts +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,37 @@ 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.2.58
|
|
10
|
+
|
|
11
|
+
- **Added** CHB-MIT to the corpus, closing a gap the README has named since 0.1. It is chosen to be
|
|
12
|
+
UNLIKE sleep-edfx rather than to add volume: 23 channels at a uniform 256 Hz in one-second
|
|
13
|
+
records, recorded in 2010 at another institution on other equipment, against 7 channels at mixed
|
|
14
|
+
rates in 30-second records from 1989. Every real file in this suite came from one dataset until
|
|
15
|
+
now. Same bit-for-bit parity with pyEDFlib across all 23 channels.
|
|
16
|
+
- It also supplies something no fixture in this project had: **a montage that names one derivation
|
|
17
|
+
twice.** `T8-P8` appears at index 14 and index 22, and the two carry identical samples — verified
|
|
18
|
+
against pyEDFlib over the whole hour rather than assumed; I had written the test expecting them
|
|
19
|
+
to differ. `EdfAmbiguousChannelError` had until now only ever been raised against a fixture
|
|
20
|
+
written to raise it.
|
|
21
|
+
- That identity makes the refusal matter more, not less. If `getSignal` picked one arbitrarily, no
|
|
22
|
+
comparison of the returned numbers could reveal which it picked, so a caller would never learn
|
|
23
|
+
the question had two answers. The error is the only signal there is.
|
|
24
|
+
- Downloaded on demand under the Open Data Commons Attribution License v1.0, hash-verified, never
|
|
25
|
+
redistributed — the same terms as every other corpus entry.
|
|
26
|
+
|
|
27
|
+
## 0.2.57
|
|
28
|
+
|
|
29
|
+
- **Documented** what the corpus work of 0.2.49-0.2.55 actually established. The README's
|
|
30
|
+
interop section stopped at sample parity, which was the state at 0.2.48 and has not been the
|
|
31
|
+
state since — annotation onsets, the zero-record-duration scoring file, the 1985-2084 year rule,
|
|
32
|
+
faithful decimation over 7,950,000 samples, chunk-independence, the memory bound, streaming
|
|
33
|
+
equivalence, HTTP random access costing under 64 KB for a window twelve hours into a 48 MB file,
|
|
34
|
+
and `validate` exiting 0 on a real clinical recording were all verified and none of them were
|
|
35
|
+
claimed. A reader deciding whether to trust this package should not have to reconstruct that
|
|
36
|
+
from a changelog.
|
|
37
|
+
- Each row names how it is checked rather than only what it asserts, because "we test that" is the
|
|
38
|
+
kind of claim this project has spent forty releases learning not to make without saying how.
|
|
39
|
+
|
|
9
40
|
## 0.2.56
|
|
10
41
|
|
|
11
42
|
- **Fixed** `tests/README.md`, which said "There are no binary fixtures in this repository" and
|
package/README.md
CHANGED
|
@@ -310,14 +310,39 @@ establish.
|
|
|
310
310
|
chose: a **22-hour clinical polysomnogram** from sleep-edfx, and the teuniz generator files in EDF,
|
|
311
311
|
EDF+ and 24-bit BDF+. Sampled at the start, the middle and the end of every signal — the end window
|
|
312
312
|
being the one that catches record arithmetic drifting with distance, which a sample near record 0
|
|
313
|
-
cannot.
|
|
313
|
+
cannot.
|
|
314
|
+
|
|
315
|
+
What else those files establish, which synthetic fixtures cannot:
|
|
316
|
+
|
|
317
|
+
| Claim | Checked how |
|
|
318
|
+
|---|---|
|
|
319
|
+
| Annotation onsets match pyEDFlib | 154 sleep stages from a real scoring file, to the tick |
|
|
320
|
+
| A legally **zero** record duration works | that same file — where `sampleRateHz` is `undefined` and any rate-derived expression yields `NaN` |
|
|
321
|
+
| The 1985–2084 year rule is right | a 1989 recording, against a reader that implements it independently |
|
|
322
|
+
| Decimation keeps every extreme | 7,950,000 samples reduced to 1,000 buckets, compared with an exhaustive reduction |
|
|
323
|
+
| The bucket grid ignores chunk size | 265 chunks versus a handful |
|
|
324
|
+
| Memory is bounded by the chunk | that 22-hour envelope produced under a 512 KiB budget |
|
|
325
|
+
| Streaming equals reading | 42 streamed chunks concatenated and compared sample by sample |
|
|
326
|
+
| **Random access is real** | a 30-second window twelve hours in costs **under 64 KB** over HTTP |
|
|
327
|
+
| `validate` is usable as a CI gate | exits 0 on a real recording from a real sleep lab |
|
|
328
|
+
| The sample scan sees what pyEDFlib sees | whole-signal digital extremes, all five files |
|
|
329
|
+
|
|
330
|
+
Those tests need the corpus and skip without it. `coverage.test.ts` always runs and says which
|
|
331
|
+
state you are in, because a skipped test and a passing one look identical in a summary line:
|
|
314
332
|
|
|
315
333
|
```bash
|
|
316
334
|
npm run corpus:fetch
|
|
317
335
|
```
|
|
318
336
|
|
|
319
|
-
**
|
|
320
|
-
|
|
337
|
+
**CHB-MIT, as of 0.2.58.** A second real clinical recording, deliberately unlike the first: 23
|
|
338
|
+
channels at a uniform 256 Hz in one-second records, recorded in 2010 at another institution, where
|
|
339
|
+
sleep-edfx is 7 channels at mixed rates in 30-second records from 1989. Same bit-for-bit parity. It
|
|
340
|
+
also supplies something no synthetic fixture here had — a montage that names one derivation twice,
|
|
341
|
+
which is what `EdfAmbiguousChannelError` exists for and had until now only ever been raised against
|
|
342
|
+
a fixture written to raise it.
|
|
343
|
+
|
|
344
|
+
**Still open before 1.0.** The edfplus.info conformance files. Not claimed here until a test
|
|
345
|
+
produces them.
|
|
321
346
|
|
|
322
347
|
**Shipped since 0.1.6.** Min/max envelope decimation (`readEnvelope`,
|
|
323
348
|
`readEnvelopeAtResolution`). BioSemi Status-byte helpers (`readTriggers`). Streaming iteration
|
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.2.
|
|
112
|
+
export declare const VERSION = "0.2.58";
|
|
113
113
|
//# sourceMappingURL=constants.d.ts.map
|
package/dist/constants.js
CHANGED
package/package.json
CHANGED
package/src/constants.ts
CHANGED