edf2csv 0.5.15 → 0.5.16

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.
Files changed (2) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/package.json +3 -2
package/CHANGELOG.md CHANGED
@@ -3,6 +3,34 @@
3
3
  Notable changes to edf2csv. Versions follow [semantic versioning](https://semver.org); while the
4
4
  major version is 0, a minor bump may contain breaking changes.
5
5
 
6
+ ## 0.5.16
7
+
8
+ ### Added: `npm run layouts`, which checks the claim `--layout long` is built on
9
+
10
+ Every page says the same thing about it: a different shape, not different data. That is what
11
+ makes it an honest answer to a mixed-rate recording rather than a second way to be wrong, and
12
+ for thirteen versions nothing ran it. In those thirteen versions the long layout shipped four
13
+ defects — a byte audit counting one writer per rate group, then the same again for the
14
+ compressed stream, then a channel order taken from the sampling rate rather than from the
15
+ file, then a promise of sorted rows a discontinuous recording can break. Three of the four
16
+ were found by reading code, not by converting anything.
17
+
18
+ So this converts. Every fixture crossed with six option sets that move the window and the
19
+ precision, both layouts, compared per channel: the wide column read down its rows against
20
+ that channel's rows in the long table, as an ordered sequence of value cells.
21
+
22
+ Deliberately not joined on time. The two layouts write `time_s` at different precisions by
23
+ design — the long one shares the finest any rate needs, since one column cannot mean three
24
+ things — so a time-keyed comparison compares the formatting rather than the data, and at nine
25
+ decimal places it collapses distinct sub-nanosecond samples into one key. The first version
26
+ of this harness did exactly that and reported 42 disagreements that were all its own.
27
+
28
+ Confirmed capable of failing before being kept: making the long layout skip one sample per
29
+ record is caught on the first recording, as a channel holding 8 values one way and 6 the
30
+ other. It is the correctness page's eighth claim, and the page states the sweep's shape
31
+ rather than a total, since the totals move with the fixture set — a test holds the shape
32
+ against the harness.
33
+
6
34
  ## 0.5.15
7
35
 
8
36
  ### Fixed: `--stdout` on a recording with no signal table, which both layouts got wrong
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "edf2csv",
3
- "version": "0.5.15",
3
+ "version": "0.5.16",
4
4
  "description": "Convert EDF, EDF+ and BDF biosignal recordings (European Data Format) to CSV from the command line. Local, streaming, and never resamples or alters units.",
5
5
  "keywords": [
6
6
  "edf",
@@ -65,7 +65,8 @@
65
65
  "fuzz": "npm run build && npm run fixtures && node test/fuzz/mutate.mjs",
66
66
  "fuzz:batch": "npm run build && npm run fixtures && node test/fuzz/trees.mjs",
67
67
  "estimate": "npm run build && npm run fixtures && node test/fuzz/estimate.mjs",
68
- "roundtrip": "npm run build && node test/fuzz/roundtrip.mjs"
68
+ "roundtrip": "npm run build && node test/fuzz/roundtrip.mjs",
69
+ "layouts": "npm run build && npm run fixtures && node test/fuzz/layouts.mjs"
69
70
  },
70
71
  "devDependencies": {
71
72
  "@types/node": "^22.10.0",