> ## Documentation Index
> Fetch the complete documentation index at: https://docs.usefusion.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Devices & Data Formats

> Supported EEG devices, channel mappings, and data format specifications

# Devices & Data Formats

## Supported Devices

### Neurosity Crown

The [Neurosity Crown](https://neurosity.co/) is an 8-channel consumer EEG headset.

| Property      | Value                              |
| ------------- | ---------------------------------- |
| Channels      | 8                                  |
| Channel Names | CP3, C3, F5, PO3, PO4, F6, C4, CP4 |
| Sample Rate   | 256 Hz                             |
| Montage       | International 10-20 subset         |
| Connection    | WiFi (SDK) or Bluetooth            |

**Channel locations** map to the standard 10-05 montage:

* **Frontal**: F5, F6 (lateral frontal)
* **Central**: C3, C4 (motor cortex, left/right)
* **Parietal**: CP3, CP4 (centro-parietal)
* **Occipital**: PO3, PO4 (parieto-occipital)

### Muse (Muse 2, Muse S)

The [Muse](https://choosemuse.com/) headbands are 4-channel consumer EEG devices.

| Property      | Value                         |
| ------------- | ----------------------------- |
| Channels      | 4                             |
| Channel Names | TP9, AF7, AF8, TP10           |
| Sample Rate   | 256 Hz                        |
| Montage       | International 10-20 subset    |
| Connection    | Bluetooth (Web Bluetooth API) |

**Channel locations:**

* **Temporal**: TP9, TP10 (behind ears)
* **Frontal**: AF7, AF8 (forehead, above eyebrows)

## Data Formats

### Input: Device CSV

The API accepts raw CSV data as a string. The CSV should contain:

* A **header row** with channel names (and optionally a timestamp column)
* **Data rows** with values in **microvolts (µV)**

```csv theme={null}
timestamp,TP9,AF7,AF8,TP10
1700000000.000,15.2,-4.1,6.3,-8.7
1700000000.004,14.8,-3.9,6.1,-8.2
```

<Tip>
  The timestamp column is optional. If present, it's ignored during processing — ZUNA uses the sample rate to reconstruct timing. But it's useful for aligning with other data sources.
</Tip>

### Output: JSON Channel Data

When `output_format: "json"`, the response includes a `channel_data` object with per-channel arrays:

```json theme={null}
{
  "channel_data": {
    "TP9": [1.23, -0.45, 2.67, ...],
    "AF7": [0.89, 1.34, -0.78, ...],
    "AF8": [2.01, 0.56, 1.89, ...],
    "TP10": [-0.34, 1.12, -0.23, ...]
  }
}
```

Each array contains `output.n_samples` values in **microvolts (µV)**.

### Output: CSV

When `output_format: "csv"`, the response includes `output.csv_content`:

```csv theme={null}
timestamp_s,TP9,AF7,AF8,TP10
0.000000,1.230000,-0.450000,2.670000,...
0.003906,0.890000,1.340000,-0.780000,...
```

The `timestamp_s` column contains time in seconds from the start of the recording.

## ZUNA Processing Details

### What ZUNA Does

ZUNA (by [Zyphra](https://huggingface.co/Zyphra/ZUNA)) is a foundation model for EEG signal processing. It was trained on large-scale EEG datasets to understand the structure of brain signals.

**Denoising** removes:

* Eye blink artifacts (frontal channels)
* Muscle artifacts (jaw clenching, head movement)
* Environmental noise (50/60 Hz line noise)
* Electrode contact noise

While preserving:

* Neural oscillations (alpha, beta, theta, gamma, delta)
* Event-related potentials
* Frequency-specific power patterns

### Processing Pipeline

1. **CSV → FIF**: Convert CSV to MNE RawArray with standard 10-05 montage
2. **Preprocessing**: Resample to 256 Hz, bandpass filter, epoch into 5-second segments, normalize (std = 0.1)
3. **Inference**: Run ZUNA model on GPU (diffusion-based denoising)
4. **Post-processing**: Convert output tensors back to FIF, then to CSV/JSON

### Key Constraints

| Constraint         | Value          | Reason                           |
| ------------------ | -------------- | -------------------------------- |
| Minimum duration   | 5 seconds      | ZUNA epochs are 5s long          |
| Recommended buffer | 1 second       | The API trims partial epochs     |
| Sample rate        | Any → 256 Hz   | ZUNA resamples internally        |
| Channel names      | Standard 10-20 | Required for montage positioning |
| Output length      | ≤ Input        | Partial final epochs are dropped |

### Example: Duration Math

| Input Duration | Epochs | Output Duration |
| -------------- | ------ | --------------- |
| 5.0s           | 1      | 5.0s            |
| 6.0s           | 1      | 5.0s            |
| 10.0s          | 2      | 10.0s           |
| 12.5s          | 2      | 10.0s           |
| 30.0s          | 6      | 30.0s           |
