Ways of Recording Data
There are 3 ways to record data for analysis:
- Using the Flow UI on the cloud, see Initiating a recording.
- Using the Offline UI to a SNIRF file, see Recording Offline.
- Using the SDK and storing data locally, see Kernel SDK.
Differences
We are working towards parity between all the ways of recording data. The table below represents the current state of each and will be updated as we implement any gaps:
| Cloud | Offline SNIRF | SDK | |
| Loss tolerant | ✅ Data buffered to disk then uploaded | ✅ Data saved directly to disk | ⚠️ Requires consumer of data to keep up with the stream rate and store themselves |
| Streams | ✅ NIRS Gated moments ✅ NIRS Hb moments ✅ NIRS raw moments* ✅ IRF ✅ EEG ✅ Task Events ✅ Sync Accessory Box | ❌ NIRS Gated moments ❌ NIRS Hb moments ✅ NIRS raw moments* ❌ IRF ❌ EEG ✅ Task Events ✅ Sync Accessory Box | ❌ NIRS Gated moments ❌ NIRS Hb moments ✅ NIRS raw moments* ❌ IRF ✅ EEG ✅ Task Events ❌ Sync Accessory Box |
| NIRS raw moments* | ✅ Histogram noise floor correction and bad channel removal | ⚠️ Streaming-optimized histogram noise floor correction and bad channel removal | ⚠️ Streaming-optimized noise floor correction and bad channel removal |
NIRS raw moments processing
On the cloud, the moments are run through the SNIRF Moments Pipeline on high-compute servers. Locally when recording Offline or via the SDK, they are run on our firmware, a much smaller processor. There, we implemented the core steps with the highest impact on signal quality. Even with less steps, the final data overlaps considerably, and many customers have had successful analysis on local recordings.
Histogram noise floor correction
The 3 moments have a 99% correlation between the cloud SNIRF Moments Pipeline and the local Offline/SDK pipelines.
Bad channel removal
The cloud SNIRF Moments Pipeline operates on the entire recording, and there is some final set of good channels that are determined. In the local Offline/SDK pipelines, the good channels are computed sample by sample, where each sample will have a different set of good channels. Today, there are some differences in the logic, but we are working towards achieving parity so that, on average, the number of good channels matches between cloud and local. We will provide an update when this is the case.