apage-ambiq commited on
Commit
8d0a03f
·
verified ·
1 Parent(s): cb3f58d

Release deployment artifacts from CompressionKit

Browse files
README.md ADDED
@@ -0,0 +1,98 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: apache-2.0
3
+ library_name: compressionkit
4
+ pipeline_tag: other
5
+ tags:
6
+ - compressionkit
7
+ - signal-compression
8
+ - ppg
9
+ - rvq
10
+ - tflite
11
+ - edge-ai
12
+ ---
13
+
14
+ # compressionkit-ppg-16x
15
+
16
+ A **PPG** signal compression codec using Residual Vector Quantization (RVQ), optimized for edge and wearable devices.
17
+
18
+ ## Model Details
19
+
20
+ - **Modality:** PPG
21
+ - **Sample Rate:** 64 Hz
22
+ - **Compression Ratio:** 16x
23
+ - **Quantization:** INT8
24
+ - **RVQ Levels:** 4
25
+ - **Codebook Size:** 256 entries × 16D
26
+ - **Encoder Input:** `[None, 1, 320, 1]`
27
+ - **Encoder Output:** `[None, 1, 20, 16]`
28
+
29
+ ## Quality Metrics
30
+
31
+ ### Time Domain
32
+
33
+ | Metric | Mean | Median | P90 |
34
+ |--------|------|--------|-----|
35
+ | PRD (%) | 12.4496 | 5.4119 | 25.0669 |
36
+ | RMSE | 0.0629 | 0.0476 | 0.0905 |
37
+ | Cosine Similarity | 0.9663 | 0.9986 | 0.9993 |
38
+
39
+ ### Spectral
40
+
41
+ - **Band Total Relative Error (median):** 0.0486
42
+
43
+ ### Bitrate
44
+
45
+ - **Codec CR (uniform):** 16.0x
46
+ - **Codec CR (learned prior):** 16.30x
47
+
48
+ ## Usage
49
+
50
+ ### Python (compressionkit runtime)
51
+
52
+ ```python
53
+ from compressionkit.runtime import RVQCodec
54
+
55
+ codec = RVQCodec.from_pretrained("Ambiq/compressionkit-ppg-16x")
56
+
57
+ # Encode: float32 signal → RVQ indices
58
+ indices = codec.encode(signal)
59
+
60
+ # Decode: RVQ indices → reconstructed signal
61
+ recon = codec.decode(indices)
62
+ ```
63
+
64
+ ### Local deployment directory
65
+
66
+ ```python
67
+ codec = RVQCodec("path/to/deploy/")
68
+ ```
69
+
70
+ ## Files
71
+
72
+ | File | Description |
73
+ |------|-------------|
74
+ | `encoder_int8.tflite` | INT8 quantized encoder (on-device) |
75
+ | `encoder.h` | C header for encoder |
76
+ | `decoder_float32.tflite` | Float32 decoder (server-side evaluation) |
77
+ | `decoder_int8.tflite` | INT8 decoder (optional, on-device) |
78
+ | `codebook.npz` | RVQ codebook tables |
79
+ | `codebook.h` | C header for codebook |
80
+ | `config.json` | Deployment manifest |
81
+ | `sample_stimulus.npz` | Synthetic test data |
82
+ | `quality_scorecard.json` | Full evaluation metrics |
83
+
84
+ ## Dataset & License
85
+
86
+ Training data: MESA (NSRR restricted). Sample data uses synthetic physiokit waveforms only — no patient data is redistributed.
87
+
88
+ Model weights are released under the **APACHE-2.0** license.
89
+
90
+ ## Citation
91
+
92
+ ```bibtex
93
+ @software{compressionkit,
94
+ author = {Ambiq AI},
95
+ title = {compressionKIT: Signal Compression for Edge AI},
96
+ url = {https://github.com/AmbiqAI/compressionkit}
97
+ }
98
+ ```
codebook.h ADDED
The diff for this file is too large to render. See raw diff
 
codebook.npz ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:e5335e588041db376c454e5d5b57685a19d8fdbe7daa5cb2e5756a059aea08c5
3
+ size 66542
config.json ADDED
@@ -0,0 +1,56 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "model_name": "ppg_rvq_64hz_16x_golden",
3
+ "model_version": "1.0",
4
+ "quantization": "INT8",
5
+ "io_type": "int8",
6
+ "encoder": {
7
+ "tflite": "encoder.tflite",
8
+ "header": "encoder.h",
9
+ "input_shape": [
10
+ null,
11
+ 1,
12
+ 320,
13
+ 1
14
+ ],
15
+ "output_shape": [
16
+ null,
17
+ 1,
18
+ 20,
19
+ 16
20
+ ]
21
+ },
22
+ "decoder": {
23
+ "keras": "decoder.keras",
24
+ "float32_tflite": null,
25
+ "int8_tflite": null,
26
+ "int8_header": null,
27
+ "input_shape": [
28
+ null,
29
+ 1,
30
+ 20,
31
+ 16
32
+ ],
33
+ "output_shape": [
34
+ null,
35
+ 1,
36
+ 320,
37
+ 1
38
+ ]
39
+ },
40
+ "codebook": {
41
+ "npz": "codebook.npz",
42
+ "header": "codebook.h",
43
+ "num_levels": 4,
44
+ "num_embeddings": 256,
45
+ "embedding_dim": 16
46
+ },
47
+ "sample_data": {
48
+ "npz": "sample_data.npz",
49
+ "num_samples": 50,
50
+ "arrays": [
51
+ "inputs",
52
+ "targets",
53
+ "reconstructions"
54
+ ]
55
+ }
56
+ }
decoder.h ADDED
The diff for this file is too large to render. See raw diff
 
decoder_int8.tflite ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:508982317a0404197c20032ce71dfbab5cc5678c872251891a186b27c36e3c42
3
+ size 183608
encoder.h ADDED
The diff for this file is too large to render. See raw diff
 
encoder_int8.tflite ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:ad38dc25f34f33002c73d1c4f0eee91e3d551069ee8b96ac85fd4e5f24e33ce4
3
+ size 55792
quality_scorecard.json ADDED
@@ -0,0 +1,598 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "run_dir": "results/ppg_rvq_64hz_16x_golden",
3
+ "modality": "ppg",
4
+ "sample_rate": 64,
5
+ "num_samples_loaded": 1000,
6
+ "num_samples": 918,
7
+ "num_samples_rejected": 82,
8
+ "min_signal_std": 0.0001,
9
+ "noise_estimator": "bp",
10
+ "bitrate": {
11
+ "best_prior_tag": "tcn_ppg_2frame_ctx",
12
+ "val_bits_per_token": 7.85132749578844,
13
+ "val_bits_per_frame": null,
14
+ "cr_codec_uniform": 16.0,
15
+ "cr_codec_learned": 16.302975524669037,
16
+ "codec_compression_ratio": 16.0,
17
+ "effective_downsample_factor": 16,
18
+ "encoder_total_params": null
19
+ },
20
+ "time_domain": {
21
+ "prd_percent": {
22
+ "n": 918,
23
+ "mean": 12.44960122346719,
24
+ "std": 19.49867885098517,
25
+ "median": 5.411897769251208,
26
+ "p10": 3.797320671979036,
27
+ "p90": 25.066904463107033,
28
+ "max": 103.91551222914003,
29
+ "min": 2.906217410097907
30
+ },
31
+ "prdn_noise_percent": {
32
+ "n": 918,
33
+ "mean": 2.81520382167474,
34
+ "std": 14.340218460551508,
35
+ "median": 0.0,
36
+ "p10": 0.0,
37
+ "p90": 0.0,
38
+ "max": 111.3452991768618,
39
+ "min": 0.0
40
+ },
41
+ "rmse": {
42
+ "n": 918,
43
+ "mean": 0.06290432295542764,
44
+ "std": 0.06170661815778227,
45
+ "median": 0.047629257727111504,
46
+ "p10": 0.03513157551963291,
47
+ "p90": 0.09050085113861148,
48
+ "max": 0.7499049046946236,
49
+ "min": 0.01618294575653301
50
+ },
51
+ "cosine_similarity": {
52
+ "n": 918,
53
+ "mean": 0.966311537066154,
54
+ "std": 0.12052644624385363,
55
+ "median": 0.9985658526420593,
56
+ "p10": 0.9684098958969116,
57
+ "p90": 0.9993095159530639,
58
+ "max": 0.9995792508125305,
59
+ "min": 0.05941188707947731
60
+ }
61
+ },
62
+ "spectral": {
63
+ "band_total_rel_error": {
64
+ "n": 918,
65
+ "mean": 0.1879684250291468,
66
+ "std": 2.1050816686518425,
67
+ "median": 0.04861568321247575,
68
+ "p10": 0.014664541393286904,
69
+ "p90": 0.32675845668957615,
70
+ "max": 63.67061239770111,
71
+ "min": 0.0008318376961172892
72
+ },
73
+ "per_band_rel_error": {
74
+ "band_0.5_3_rel_error": {
75
+ "n": 918,
76
+ "mean": 0.05721943725080367,
77
+ "std": 0.1633520890677707,
78
+ "median": 0.015152686878204796,
79
+ "p10": 0.0034278958235311116,
80
+ "p90": 0.06890859039098467,
81
+ "max": 1.8017127745431583,
82
+ "min": 5.1537652579085155e-05
83
+ },
84
+ "band_3_8_rel_error": {
85
+ "n": 918,
86
+ "mean": 0.31871741280748983,
87
+ "std": 4.143012135540174,
88
+ "median": 0.08377251856545496,
89
+ "p10": 0.015894632121202464,
90
+ "p90": 0.6046135093334575,
91
+ "max": 125.53951202085906,
92
+ "min": 0.00014334422515391822
93
+ },
94
+ "band_total_rel_error": {
95
+ "n": 918,
96
+ "mean": 0.1879684250291468,
97
+ "std": 2.1050816686518425,
98
+ "median": 0.04861568321247575,
99
+ "p10": 0.014664541393286904,
100
+ "p90": 0.32675845668957615,
101
+ "max": 63.67061239770111,
102
+ "min": 0.0008318376961172892
103
+ }
104
+ },
105
+ "weighted_freq_prd_percent": {
106
+ "n": 918,
107
+ "mean": 10.164857219964684,
108
+ "std": 17.431722665539848,
109
+ "median": 3.848089947374697,
110
+ "p10": 2.7385779215976727,
111
+ "p90": 20.47533096788764,
112
+ "max": 107.06918810094149,
113
+ "min": 1.881448111970149
114
+ },
115
+ "coherence": {
116
+ "n": 918,
117
+ "mean": 0.8837628614968894,
118
+ "std": 0.13399544165007823,
119
+ "median": 0.9385725807437842,
120
+ "p10": 0.6872432817077828,
121
+ "p90": 0.9826256920535319,
122
+ "max": 0.9948297931107224,
123
+ "min": 0.2700958895435719
124
+ }
125
+ },
126
+ "physiology": {
127
+ "num_total_pairs": 918,
128
+ "num_valid_pairs": 578,
129
+ "target_mean_hr_bpm": 63.789533211545965,
130
+ "reconstructed_mean_hr_bpm": 63.819059957967085,
131
+ "hr_mae_bpm": 0.4058702718876816,
132
+ "hr_median_ae_bpm": 0.17577588574567216,
133
+ "hr_bias_bpm": 0.029526746421130266,
134
+ "target_mean_rmssd_ms": 48.47173391245018,
135
+ "reconstructed_mean_rmssd_ms": 47.596217301886085,
136
+ "rmssd_mae_ms": 16.107741185957146,
137
+ "rmssd_median_ae_ms": 5.668101320779188,
138
+ "target_mean_sdnn_ms": 41.009365364479336,
139
+ "reconstructed_mean_sdnn_ms": 39.88793632231743,
140
+ "sdnn_mae_ms": 11.922550422930447,
141
+ "sdnn_median_ae_ms": 4.268104925495928,
142
+ "peak_alignment": {
143
+ "num_total_pairs": 918.0,
144
+ "num_valid_pairs": 578.0,
145
+ "timing_tolerance_ms": 125.0,
146
+ "timing_tolerance_samples": 8.0,
147
+ "target_total_peaks": 3077.0,
148
+ "reconstructed_total_peaks": 3079.0,
149
+ "matched_total_peaks": 3052.0,
150
+ "total_missed_peaks": 25.0,
151
+ "total_extra_peaks": 27.0,
152
+ "peak_count_exact_match_pct": 96.53979238754326,
153
+ "peak_precision_pct": 99.18520349316196,
154
+ "peak_recall_pct": 99.25832097544902,
155
+ "peak_f1_pct": 99.19790129132689,
156
+ "peak_timing_mae_ms": 5.211746395806029,
157
+ "peak_timing_median_ms": 0.0,
158
+ "peak_timing_p90_ms": 15.625,
159
+ "peak_timing_max_ms": 125.0,
160
+ "peak_timing_within_1sample_pct": 97.08387942332897,
161
+ "ibi_mae_ms": 8.280996758508914,
162
+ "ibi_median_ae_ms": 0.0,
163
+ "ibi_p90_ae_ms": 15.625
164
+ },
165
+ "by_noise_tertile": {
166
+ "thresholds_bp_noise_rms": {
167
+ "clean_max": 0.2376053872276189,
168
+ "median_max": 0.33059459069595076
169
+ },
170
+ "buckets": {
171
+ "clean": {
172
+ "n": 193,
173
+ "hr_mae_bpm": {
174
+ "n": 193,
175
+ "mean": 0.44087972202529263,
176
+ "std": 3.153738431903891,
177
+ "median": 0.0,
178
+ "p10": 0.0,
179
+ "p90": 0.41247644091395447,
180
+ "max": 42.71493212669684,
181
+ "min": 0.0
182
+ },
183
+ "sdnn_mae_ms": {
184
+ "n": 193,
185
+ "mean": 11.595932620574047,
186
+ "std": 55.05125929117035,
187
+ "median": 4.070871424876373,
188
+ "p10": 0.0,
189
+ "p90": 13.012874902048175,
190
+ "max": 585.1440128519438,
191
+ "min": 0.0
192
+ },
193
+ "rmssd_mae_ms": {
194
+ "n": 193,
195
+ "mean": 17.97780887309394,
196
+ "std": 84.33499473010164,
197
+ "median": 5.916869631880587,
198
+ "p10": 0.0,
199
+ "p90": 19.15795631312076,
200
+ "max": 868.1246804571084,
201
+ "min": 0.0
202
+ },
203
+ "peak_timing_mae_ms": {
204
+ "n": 193,
205
+ "mean": 4.790047495682211,
206
+ "std": 5.134477173456952,
207
+ "median": 3.125,
208
+ "p10": 0.0,
209
+ "p90": 9.375,
210
+ "max": 31.25,
211
+ "min": 0.0
212
+ },
213
+ "peak_f1_pct": {
214
+ "n": 193,
215
+ "mean": 99.16313392997331,
216
+ "std": 6.578479960624917,
217
+ "median": 100.0,
218
+ "p10": 100.0,
219
+ "p90": 100.0,
220
+ "max": 100.0,
221
+ "min": 33.33333333333333
222
+ }
223
+ },
224
+ "median": {
225
+ "n": 192,
226
+ "hr_mae_bpm": {
227
+ "n": 192,
228
+ "mean": 0.23470596403071797,
229
+ "std": 0.3822408157947192,
230
+ "median": 0.17057569296375874,
231
+ "p10": 0.0,
232
+ "p90": 0.5441159386234858,
233
+ "max": 2.351717682947978,
234
+ "min": 0.0
235
+ },
236
+ "sdnn_mae_ms": {
237
+ "n": 192,
238
+ "mean": 6.1554937678850505,
239
+ "std": 9.156636429694004,
240
+ "median": 3.3329791934276205,
241
+ "p10": 0.0,
242
+ "p90": 13.475326357622698,
243
+ "max": 58.04516785468435,
244
+ "min": 0.0
245
+ },
246
+ "rmssd_mae_ms": {
247
+ "n": 192,
248
+ "mean": 7.334500074973025,
249
+ "std": 10.203327798726063,
250
+ "median": 4.368328773164221,
251
+ "p10": 0.0,
252
+ "p90": 17.18090432753805,
253
+ "max": 66.93769514627941,
254
+ "min": 0.0
255
+ },
256
+ "peak_timing_mae_ms": {
257
+ "n": 192,
258
+ "mean": 4.368179563492063,
259
+ "std": 4.958335843947559,
260
+ "median": 3.125,
261
+ "p10": 0.0,
262
+ "p90": 9.375,
263
+ "max": 37.5,
264
+ "min": 0.0
265
+ },
266
+ "peak_f1_pct": {
267
+ "n": 192,
268
+ "mean": 99.62121212121212,
269
+ "std": 1.816602849739667,
270
+ "median": 100.0,
271
+ "p10": 100.0,
272
+ "p90": 100.0,
273
+ "max": 100.0,
274
+ "min": 90.9090909090909
275
+ }
276
+ },
277
+ "noisy": {
278
+ "n": 193,
279
+ "hr_mae_bpm": {
280
+ "n": 193,
281
+ "mean": 0.5411382679082936,
282
+ "std": 1.4398935658216376,
283
+ "median": 0.19046485328254192,
284
+ "p10": 0.0,
285
+ "p90": 0.8547954559590953,
286
+ "max": 11.669348042595558,
287
+ "min": 0.0
288
+ },
289
+ "sdnn_mae_ms": {
290
+ "n": 193,
291
+ "mean": 17.98634375776725,
292
+ "std": 63.93929966117661,
293
+ "median": 5.104920329402731,
294
+ "p10": 0.0,
295
+ "p90": 20.991742441173013,
296
+ "max": 540.4676004045459,
297
+ "min": 0.0
298
+ },
299
+ "rmssd_mae_ms": {
300
+ "n": 193,
301
+ "mean": 22.96545740197553,
302
+ "std": 78.20059844542827,
303
+ "median": 6.128123540072977,
304
+ "p10": 0.0,
305
+ "p90": 32.5165376456551,
306
+ "max": 735.1042947045389,
307
+ "min": 0.0
308
+ },
309
+ "peak_timing_mae_ms": {
310
+ "n": 193,
311
+ "mean": 6.543763878608439,
312
+ "std": 7.286950391399349,
313
+ "median": 5.208333333333333,
314
+ "p10": 0.0,
315
+ "p90": 12.5,
316
+ "max": 50.0,
317
+ "min": 0.0
318
+ },
319
+ "peak_f1_pct": {
320
+ "n": 193,
321
+ "mean": 98.81155114315737,
322
+ "std": 4.550507646837322,
323
+ "median": 100.0,
324
+ "p10": 100.0,
325
+ "p90": 100.0,
326
+ "max": 100.0,
327
+ "min": 72.72727272727272
328
+ }
329
+ }
330
+ }
331
+ }
332
+ },
333
+ "stability": {},
334
+ "by_noise_tertile": {
335
+ "thresholds_bp_noise_rms": {
336
+ "clean_max": 0.2368393320829289,
337
+ "median_max": 0.34030656767184214
338
+ },
339
+ "buckets": {
340
+ "clean": {
341
+ "n": 306,
342
+ "time_domain": {
343
+ "prd_percent": {
344
+ "n": 306,
345
+ "mean": 19.52665189004689,
346
+ "std": 28.359606288417726,
347
+ "median": 5.107153706202504,
348
+ "p10": 3.695724500830937,
349
+ "p90": 81.95037864723481,
350
+ "max": 103.91551222914003,
351
+ "min": 3.0276585072719215
352
+ },
353
+ "prdn_noise_percent": {
354
+ "n": 306,
355
+ "mean": 7.457749712699118,
356
+ "std": 22.50747774132753,
357
+ "median": 0.0,
358
+ "p10": 0.0,
359
+ "p90": 29.290043933606828,
360
+ "max": 111.3452991768618,
361
+ "min": 0.0
362
+ },
363
+ "rmse": {
364
+ "n": 306,
365
+ "mean": 0.0514213556066342,
366
+ "std": 0.023526622819849335,
367
+ "median": 0.04317023043410499,
368
+ "p10": 0.032667203629631325,
369
+ "p90": 0.08548036821703892,
370
+ "max": 0.18428062229848496,
371
+ "min": 0.01618294575653301
372
+ },
373
+ "cosine_similarity": {
374
+ "n": 306,
375
+ "mean": 0.9253417466298427,
376
+ "std": 0.1734753488469921,
377
+ "median": 0.9987265169620514,
378
+ "p10": 0.6056332588195801,
379
+ "p90": 0.9993433654308319,
380
+ "max": 0.9995424151420593,
381
+ "min": 0.21557432413101196
382
+ }
383
+ },
384
+ "spectral": {
385
+ "band_total_rel_error": {
386
+ "n": 306,
387
+ "mean": 0.19682677674348037,
388
+ "std": 0.2905716877797702,
389
+ "median": 0.04715178545980396,
390
+ "p10": 0.014797463617008337,
391
+ "p90": 0.7999114970482343,
392
+ "max": 0.9751796190306506,
393
+ "min": 0.0014728635361971958
394
+ },
395
+ "weighted_freq_prd_percent": {
396
+ "n": 306,
397
+ "mean": 16.749035742214698,
398
+ "std": 26.392062199300685,
399
+ "median": 3.510372378917018,
400
+ "p10": 2.6983873270127217,
401
+ "p90": 71.56199789529832,
402
+ "max": 107.06918810094149,
403
+ "min": 1.881448111970149
404
+ },
405
+ "coherence": {
406
+ "n": 306,
407
+ "mean": 0.8441423728376813,
408
+ "std": 0.1825059433891016,
409
+ "median": 0.931661124799897,
410
+ "p10": 0.5194260555533798,
411
+ "p90": 0.9830449098235855,
412
+ "max": 0.9937595583004383,
413
+ "min": 0.2700958895435719
414
+ }
415
+ }
416
+ },
417
+ "median": {
418
+ "n": 306,
419
+ "time_domain": {
420
+ "prd_percent": {
421
+ "n": 306,
422
+ "mean": 7.486280802201033,
423
+ "std": 8.340506975608918,
424
+ "median": 4.890126222105262,
425
+ "p10": 3.7370432526927355,
426
+ "p90": 15.674025391079535,
427
+ "max": 99.56508559892518,
428
+ "min": 2.906217410097907
429
+ },
430
+ "prdn_noise_percent": {
431
+ "n": 306,
432
+ "mean": 0.28354176511345663,
433
+ "std": 4.735137408654737,
434
+ "median": 0.0,
435
+ "p10": 0.0,
436
+ "p90": 0.0,
437
+ "max": 82.88892377741264,
438
+ "min": 0.0
439
+ },
440
+ "rmse": {
441
+ "n": 306,
442
+ "mean": 0.05289546276145074,
443
+ "std": 0.028574662687522987,
444
+ "median": 0.045290606485861404,
445
+ "p10": 0.03569445879350002,
446
+ "p90": 0.07459080750517877,
447
+ "max": 0.28840756323992084,
448
+ "min": 0.0278745575228109
449
+ },
450
+ "cosine_similarity": {
451
+ "n": 306,
452
+ "mean": 0.992352796219338,
453
+ "std": 0.052648310228993564,
454
+ "median": 0.9988200962543488,
455
+ "p10": 0.9887184202671051,
456
+ "p90": 0.9993232190608978,
457
+ "max": 0.9995792508125305,
458
+ "min": 0.09624811261892319
459
+ }
460
+ },
461
+ "spectral": {
462
+ "band_total_rel_error": {
463
+ "n": 306,
464
+ "mean": 0.06845950542894202,
465
+ "std": 0.08988654619257876,
466
+ "median": 0.043212866603429476,
467
+ "p10": 0.013544542204513576,
468
+ "p90": 0.1415071790773722,
469
+ "max": 0.7893883490677405,
470
+ "min": 0.0008318376961172892
471
+ },
472
+ "weighted_freq_prd_percent": {
473
+ "n": 306,
474
+ "mean": 5.407772079529939,
475
+ "std": 6.6666357720429925,
476
+ "median": 3.4744850198792268,
477
+ "p10": 2.646840464115584,
478
+ "p90": 10.56122933987119,
479
+ "max": 79.65417096749393,
480
+ "min": 2.0674205875192877
481
+ },
482
+ "coherence": {
483
+ "n": 306,
484
+ "mean": 0.9243418533340585,
485
+ "std": 0.08748700037475023,
486
+ "median": 0.9538836976907613,
487
+ "p10": 0.8381762455572364,
488
+ "p90": 0.9857610204481726,
489
+ "max": 0.9948297931107224,
490
+ "min": 0.44121419765919917
491
+ }
492
+ }
493
+ },
494
+ "noisy": {
495
+ "n": 306,
496
+ "time_domain": {
497
+ "prd_percent": {
498
+ "n": 306,
499
+ "mean": 10.335870978153647,
500
+ "std": 13.695877265289672,
501
+ "median": 6.305096955628349,
502
+ "p10": 4.0970612125474695,
503
+ "p90": 17.851144807845767,
504
+ "max": 99.83077119612096,
505
+ "min": 2.9191674756074413
506
+ },
507
+ "prdn_noise_percent": {
508
+ "n": 306,
509
+ "mean": 0.7043199872116456,
510
+ "std": 7.449774510167011,
511
+ "median": 0.0,
512
+ "p10": 0.0,
513
+ "p90": 0.0,
514
+ "max": 97.68574802259793,
515
+ "min": 0.0
516
+ },
517
+ "rmse": {
518
+ "n": 306,
519
+ "mean": 0.08439615049819797,
520
+ "std": 0.09674281560794915,
521
+ "median": 0.055387211616473676,
522
+ "p10": 0.03821909604124357,
523
+ "p90": 0.13285916383721944,
524
+ "max": 0.7499049046946236,
525
+ "min": 0.027851641589315936
526
+ },
527
+ "cosine_similarity": {
528
+ "n": 306,
529
+ "mean": 0.9812400683492811,
530
+ "std": 0.09019312364040735,
531
+ "median": 0.998040109872818,
532
+ "p10": 0.9842633008956909,
533
+ "p90": 0.9991828203201294,
534
+ "max": 0.9995743036270142,
535
+ "min": 0.05941188707947731
536
+ }
537
+ },
538
+ "spectral": {
539
+ "band_total_rel_error": {
540
+ "n": 306,
541
+ "mean": 0.2986189929150179,
542
+ "std": 3.6297369874033425,
543
+ "median": 0.061116662952874226,
544
+ "p10": 0.01551730553591265,
545
+ "p90": 0.22169656653361136,
546
+ "max": 63.67061239770111,
547
+ "min": 0.0026575292512353
548
+ },
549
+ "weighted_freq_prd_percent": {
550
+ "n": 306,
551
+ "mean": 8.337763838149412,
552
+ "std": 10.064310683994753,
553
+ "median": 5.037486742834735,
554
+ "p10": 3.0632286799817665,
555
+ "p90": 16.265528526593613,
556
+ "max": 98.44270768864263,
557
+ "min": 2.1912273855680326
558
+ },
559
+ "coherence": {
560
+ "n": 306,
561
+ "mean": 0.8828043583189281,
562
+ "std": 0.09841028459273661,
563
+ "median": 0.9170438439513232,
564
+ "p10": 0.7305910345257288,
565
+ "p90": 0.9769953521668604,
566
+ "max": 0.9930227496093535,
567
+ "min": 0.4051999236472393
568
+ }
569
+ }
570
+ }
571
+ }
572
+ },
573
+ "context": {
574
+ "noise_power": {
575
+ "n": 918,
576
+ "mean": 0.1214827987441605,
577
+ "std": 0.13205902481085857,
578
+ "median": 0.081333409659468,
579
+ "p10": 0.02277398108768026,
580
+ "p90": 0.2692163183141123,
581
+ "max": 0.9745430075871411,
582
+ "min": 0.00019703970012767088
583
+ },
584
+ "noise_rms": {
585
+ "n": 918,
586
+ "mean": 0.3112577145763642,
587
+ "std": 0.1568484423284435,
588
+ "median": 0.28518976201962914,
589
+ "p10": 0.15091031640469338,
590
+ "p90": 0.5188601263206948,
591
+ "max": 0.9871894486810224,
592
+ "min": 0.014037083034864149
593
+ },
594
+ "qrs_snr_db": {
595
+ "n": 0
596
+ }
597
+ }
598
+ }
sample_stimulus.npz ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:2ffaf7951838023300453c564a525bd2ffc78f13905389c36398e9f69dc44950
3
+ size 192774