apage-ambiq commited on
Commit
f652664
·
verified ·
1 Parent(s): 77dc613

Release deployment artifacts from CompressionKit

Browse files
Files changed (4) hide show
  1. README.md +4 -0
  2. config.json +10 -1
  3. demo_recordings.npz +3 -0
  4. demo_recordings_manifest.json +180 -0
README.md CHANGED
@@ -88,6 +88,7 @@ codec = RVQCodec("path/to/deploy/")
88
  | File | Description |
89
  |------|-------------|
90
  | `encoder_int8.tflite` | INT8 quantized encoder (on-device) |
 
91
  | `encoder.h` | C header for encoder |
92
  | `encoder.keras` | Float32 Python reference encoder (training/inspection use) |
93
  | `decoder_float32.tflite` | Float32 decoder (server-side evaluation) |
@@ -97,11 +98,14 @@ codec = RVQCodec("path/to/deploy/")
97
  | `codebook.h` | C header for codebook |
98
  | `config.json` | Deployment manifest |
99
  | `sample_stimulus.npz` | Synthetic test data |
 
 
100
  | `quality_scorecard.json` | Full evaluation metrics |
101
 
102
  ## Dataset & License
103
 
104
  Training data provenance is not recorded in this package; sample data uses synthetic physiokit waveforms only — no patient data is redistributed.
 
105
 
106
  Model weights are released under the **Ambiq Model Weights License** — deployment is restricted to Ambiq silicon devices. See `LICENSE-MODEL-WEIGHTS.md` for full terms.
107
 
 
88
  | File | Description |
89
  |------|-------------|
90
  | `encoder_int8.tflite` | INT8 quantized encoder (on-device) |
91
+ | `encoder_float32.tflite` | Float32 encoder for browser/server runtimes |
92
  | `encoder.h` | C header for encoder |
93
  | `encoder.keras` | Float32 Python reference encoder (training/inspection use) |
94
  | `decoder_float32.tflite` | Float32 decoder (server-side evaluation) |
 
98
  | `codebook.h` | C header for codebook |
99
  | `config.json` | Deployment manifest |
100
  | `sample_stimulus.npz` | Synthetic test data |
101
+ | `demo_recordings.npz` | 10 real, quality-gated browser-demo recordings |
102
+ | `demo_recordings_manifest.json` | Recording provenance, license, and quality metadata |
103
  | `quality_scorecard.json` | Full evaluation metrics |
104
 
105
  ## Dataset & License
106
 
107
  Training data provenance is not recorded in this package; sample data uses synthetic physiokit waveforms only — no patient data is redistributed.
108
+ Demo recordings: BIDMC PPG and Respiration Dataset v1.0.0 ([source](https://physionet.org/content/bidmc/1.0.0/)); real, quality-gated excerpts are released under ODC-By-1.0. [https://opendatacommons.org/licenses/by/1-0/](https://opendatacommons.org/licenses/by/1-0/)
109
 
110
  Model weights are released under the **Ambiq Model Weights License** — deployment is restricted to Ambiq silicon devices. See `LICENSE-MODEL-WEIGHTS.md` for full terms.
111
 
config.json CHANGED
@@ -32,7 +32,9 @@
32
  "codec_spec": "codec_spec.json",
33
  "manifest": "deploy_manifest.json",
34
  "checksums": "checksums.json",
35
- "readme": "README.md"
 
 
36
  },
37
  "encoder": {
38
  "tflite": "encoder.tflite",
@@ -85,5 +87,12 @@
85
  "targets",
86
  "reconstructions"
87
  ]
 
 
 
 
 
 
 
88
  }
89
  }
 
32
  "codec_spec": "codec_spec.json",
33
  "manifest": "deploy_manifest.json",
34
  "checksums": "checksums.json",
35
+ "readme": "README.md",
36
+ "demo_recordings": "demo_recordings.npz",
37
+ "demo_recordings_manifest": "demo_recordings_manifest.json"
38
  },
39
  "encoder": {
40
  "tflite": "encoder.tflite",
 
87
  "targets",
88
  "reconstructions"
89
  ]
90
+ },
91
+ "demo_recordings": {
92
+ "npz": "demo_recordings.npz",
93
+ "manifest": "demo_recordings_manifest.json",
94
+ "num_recordings": 10,
95
+ "sample_rate": 64,
96
+ "duration_seconds": 30.0
97
  }
98
  }
demo_recordings.npz ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:3b6401d8b117604caad8c8c6310b32ac5cefbe4607ba16fdc4ab26ddf3304a7e
3
+ size 68860
demo_recordings_manifest.json ADDED
@@ -0,0 +1,180 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "format_version": 1,
3
+ "modality": "ppg",
4
+ "sample_rate": 64,
5
+ "num_recordings": 10,
6
+ "samples_per_recording": 1920,
7
+ "duration_seconds": 30.0,
8
+ "signal_representation": "raw source waveform resampled to sample_rate",
9
+ "framing_note": "Apply the selected codec's framing and normalization policy before inference.",
10
+ "source": {
11
+ "dataset": "BIDMC PPG and Respiration Dataset v1.0.0",
12
+ "license": "ODC-By-1.0",
13
+ "license_url": "https://opendatacommons.org/licenses/by/1-0/",
14
+ "url": "https://physionet.org/content/bidmc/1.0.0/",
15
+ "citation": "Pimentel MAF, et al. Toward a robust estimation of respiratory rate from pulse oximeters. IEEE Trans Biomed Eng. 2017;64(8):1914-1923."
16
+ },
17
+ "seed": 42,
18
+ "recordings": [
19
+ {
20
+ "index": 0,
21
+ "source_record": "bidmc08",
22
+ "source_sample_rate": 125,
23
+ "start_seconds": 129.752,
24
+ "quality": {
25
+ "clipping_fraction": 0.0010416666666666667,
26
+ "dynamic_range": 0.5380354523658752,
27
+ "heart_rate_bpm": 100.24507192328183,
28
+ "heart_rate_qos": 1.0,
29
+ "num_peaks": 49,
30
+ "pulse_snr_db": 31.943447392542407,
31
+ "rr_cv": 0.016121769527323103,
32
+ "standard_deviation": 0.16130027174949646
33
+ }
34
+ },
35
+ {
36
+ "index": 1,
37
+ "source_record": "bidmc38",
38
+ "source_sample_rate": 125,
39
+ "start_seconds": 212.208,
40
+ "quality": {
41
+ "clipping_fraction": 0.0010416666666666667,
42
+ "dynamic_range": 0.371447890996933,
43
+ "heart_rate_bpm": 88.55345911949685,
44
+ "heart_rate_qos": 1.0,
45
+ "num_peaks": 44,
46
+ "pulse_snr_db": 24.855584306405454,
47
+ "rr_cv": 0.04498476838589164,
48
+ "standard_deviation": 0.09077844768762589
49
+ }
50
+ },
51
+ {
52
+ "index": 2,
53
+ "source_record": "bidmc40",
54
+ "source_sample_rate": 125,
55
+ "start_seconds": 62.904,
56
+ "quality": {
57
+ "clipping_fraction": 0.0010416666666666667,
58
+ "dynamic_range": 3.356215000152588,
59
+ "heart_rate_bpm": 110.13789299503586,
60
+ "heart_rate_qos": 1.0,
61
+ "num_peaks": 52,
62
+ "pulse_snr_db": 14.390795816553823,
63
+ "rr_cv": 0.027838849653013684,
64
+ "standard_deviation": 0.5166902542114258
65
+ }
66
+ },
67
+ {
68
+ "index": 3,
69
+ "source_record": "bidmc18",
70
+ "source_sample_rate": 125,
71
+ "start_seconds": 156.376,
72
+ "quality": {
73
+ "clipping_fraction": 0.0010416666666666667,
74
+ "dynamic_range": 0.4979526400566101,
75
+ "heart_rate_bpm": 90.04689942678478,
76
+ "heart_rate_qos": 1.0,
77
+ "num_peaks": 45,
78
+ "pulse_snr_db": 23.259163443389603,
79
+ "rr_cv": 0.011282521582364993,
80
+ "standard_deviation": 0.11267337203025818
81
+ }
82
+ },
83
+ {
84
+ "index": 4,
85
+ "source_record": "bidmc06",
86
+ "source_sample_rate": 125,
87
+ "start_seconds": 196.528,
88
+ "quality": {
89
+ "clipping_fraction": 0.0010416666666666667,
90
+ "dynamic_range": 0.5146859288215637,
91
+ "heart_rate_bpm": 81.92,
92
+ "heart_rate_qos": 1.0,
93
+ "num_peaks": 40,
94
+ "pulse_snr_db": 28.839203282626812,
95
+ "rr_cv": 0.009877171819074283,
96
+ "standard_deviation": 0.15620273351669312
97
+ }
98
+ },
99
+ {
100
+ "index": 5,
101
+ "source_record": "bidmc51",
102
+ "source_sample_rate": 125,
103
+ "start_seconds": 442.248,
104
+ "quality": {
105
+ "clipping_fraction": 0.0010416666666666667,
106
+ "dynamic_range": 0.6119970679283142,
107
+ "heart_rate_bpm": 89.25515055467511,
108
+ "heart_rate_qos": 1.0,
109
+ "num_peaks": 44,
110
+ "pulse_snr_db": 25.53853846554274,
111
+ "rr_cv": 0.02122839838399622,
112
+ "standard_deviation": 0.14699383080005646
113
+ }
114
+ },
115
+ {
116
+ "index": 6,
117
+ "source_record": "bidmc35",
118
+ "source_sample_rate": 125,
119
+ "start_seconds": 96.56,
120
+ "quality": {
121
+ "clipping_fraction": 0.0010416666666666667,
122
+ "dynamic_range": 0.6456499695777893,
123
+ "heart_rate_bpm": 99.18819188191881,
124
+ "heart_rate_qos": 1.0,
125
+ "num_peaks": 49,
126
+ "pulse_snr_db": 20.389177511669683,
127
+ "rr_cv": 0.036614241605405655,
128
+ "standard_deviation": 0.15375757217407227
129
+ }
130
+ },
131
+ {
132
+ "index": 7,
133
+ "source_record": "bidmc41",
134
+ "source_sample_rate": 125,
135
+ "start_seconds": 225.472,
136
+ "quality": {
137
+ "clipping_fraction": 0.0010416666666666667,
138
+ "dynamic_range": 0.36978062987327576,
139
+ "heart_rate_bpm": 81.26984126984127,
140
+ "heart_rate_qos": 1.0,
141
+ "num_peaks": 40,
142
+ "pulse_snr_db": 24.898295030679385,
143
+ "rr_cv": 0.01838423694638895,
144
+ "standard_deviation": 0.07590621709823608
145
+ }
146
+ },
147
+ {
148
+ "index": 8,
149
+ "source_record": "bidmc30",
150
+ "source_sample_rate": 125,
151
+ "start_seconds": 68.536,
152
+ "quality": {
153
+ "clipping_fraction": 0.0010416666666666667,
154
+ "dynamic_range": 0.546328067779541,
155
+ "heart_rate_bpm": 89.06694781233526,
156
+ "heart_rate_qos": 1.0,
157
+ "num_peaks": 44,
158
+ "pulse_snr_db": 28.012824779061738,
159
+ "rr_cv": 0.015179339028554787,
160
+ "standard_deviation": 0.14343491196632385
161
+ }
162
+ },
163
+ {
164
+ "index": 9,
165
+ "source_record": "bidmc19",
166
+ "source_sample_rate": 125,
167
+ "start_seconds": 222.784,
168
+ "quality": {
169
+ "clipping_fraction": 0.0010416666666666667,
170
+ "dynamic_range": 0.22125974297523499,
171
+ "heart_rate_bpm": 71.60362280234416,
172
+ "heart_rate_qos": 0.9722222222222222,
173
+ "num_peaks": 35,
174
+ "pulse_snr_db": 28.726471239263375,
175
+ "rr_cv": 0.16466715957353617,
176
+ "standard_deviation": 0.03653288260102272
177
+ }
178
+ }
179
+ ]
180
+ }