# LEMON: MPI Leipzig Mind-Brain-Body EEG (Resting State) (nm000179)

## How to use the data (for agentic research)

### What it is

- **Modalities:** EEG
- **Participants:** 215
- **Size:** 127 GB
- **Tasks:** resting

### License and terms

- **License:** CC BY 4.0
- **Recommended citation:** Babayan, A., Erbey, M., Kumral, D., Reinelt, J. D., Reiter, A. M., Röbbig, J., Schaare, H. L., Uhlig, M., Anwander, A., Bazin, P., Horstmann, A., Lampe, L., Nikulin, V. V., Okon-Singer, H., Preusser, S., Pampel, A., Rohr, C. S., Sacher, J., Thone-Otto, A., Trapp, S., Nierhaus, T., Altmann, D., Arelin, K., Blochl, M., Bongartz, E., Breig, P., Cesnaite, E., Chen, S., Cozatl, R., Czerwonatis, S., Dambrauskaite, G., Dreyer, M., Enders, J., Engelhardt, M., Fischer, M. M., Forschack, N., Golchert, J., Golz, L., Guran, C. A., Hedrich, S., Hentschel, N., Hoffmann, D. I., Huntenburg, J. M., Jost, R., Kosatschek, A., Kunzendorf, S., Lammers, H., Lauckner, M. E., Mahjoory, K., Mendes, N., Menger, R., Morino, E., Nathe, K., Neubauer, J., Noyan, H., Oligschlager, S., Panczyszyn-Trzewik, P., Poehlchen, D., Putzke, N., Roski, S., Schaller, M., Schieferbein, A., Schlaak, B., Schmidt, H. M., Schmidt, R., Schrimpf, A., Stasch, S., Voss, M., Wiedemann, A., Margulies, D. S., Gaebler, M., & Villringer, A. (2026). LEMON: MPI Leipzig Mind-Brain-Body EEG (Resting State) (Version v1.0.0) \[Data set\]. NEMAR. https://doi.org/10.82901/nemar.nm000179
- **Reference 1:** [https://doi.org/10.21105/joss.01896](https://doi.org/10.21105/joss.01896)
- **Reference 2:** [https://doi.org/10.1038/s41597-019-0104-8](https://doi.org/10.1038/s41597-019-0104-8)

### Where the bytes are

- **Latest version (always current):** [https://data.nemar.org/nm000179/latest/](https://data.nemar.org/nm000179/latest/)
- **This version (v1.0.0):** [https://data.nemar.org/nm000179/v1.0.0/](https://data.nemar.org/nm000179/v1.0.0/)

### How to download

- **The dataset:** `nemar dataset download nm000179`. Clones and fetches in one step. Content under stimuli/ and derivatives/ is skipped by default because those trees can be large; add --stimuli --derivatives for the whole thing.
- **A subset, one step:** `nemar dataset download nm000179 --subjects sub-01,02`. Also filters by --sessions, --tasks, --runs, --datatypes, --include and --exclude.
- **A subset, step 1:** `nemar dataset clone nm000179`. Clones git-annex pointers only; fetches no file content. Creates ./nm000179.
- **A subset, step 2:** `cd nm000179`. The get command below reads the clone's annex, so it only works from inside the clone.
- **A subset, step 3:** `nemar dataset get <files>`. Pulls the files you actually need. Skips stimuli/ and derivatives/ unless the path you ask for is under one of them.
- **One small file:** [https://data.nemar.org/nm000179/v1.0.0/participants.tsv](https://data.nemar.org/nm000179/v1.0.0/participants.tsv). A direct HTTPS fetch works for any single file.

### Assess fit without downloading

- **Participants table:** [https://data.nemar.org/nm000179/v1.0.0/participants.tsv](https://data.nemar.org/nm000179/v1.0.0/participants.tsv)
- **Dataset description:** [https://data.nemar.org/nm000179/v1.0.0/dataset_description.json](https://data.nemar.org/nm000179/v1.0.0/dataset_description.json)
- **Directory listing:** [https://data.nemar.org/nm000179/v1.0.0/?format=json](https://data.nemar.org/nm000179/v1.0.0/?format=json)
- **Catalog record:** [https://api.nemar.org/datasets/nm000179](https://api.nemar.org/datasets/nm000179)

### Working with the Zarr copy

- **1. Start at the index:** [https://zarr.nemar.org/nm000179/zarr/index.json](https://zarr.nemar.org/nm000179/zarr/index.json). The mandatory entry point. Never hardcode a bucket path.
- **2. Pick a store entry:** `stores[].zarr, stores[].groups[].name`. These two fields exist in every index format version, so a recipe that keys on them works against the whole catalog while the back conversion is still in flight.
- **3. Build the store URI:** `s3://nemar/nm000179/zarr/{store.zarr}`. Derivable from the store entry alone. An index at format_version 3 or later also publishes contract_base, data_base and s3_uri; use them when they are there, never require them.
- **4. Open the store anonymously:** `zarr.open_group(store=..., mode="r", zarr_format=3)`. Anonymous FsspecStore.from_url in region us-east-2, no credentials. zarr_format=3 is required: without it zarr-python probes for Zarr v2 sidecars, and because anonymous ListBucket is denied, S3 answers a missing key with 403 rather than 404 and the open raises.
- **5. Read the level-0 array:** `root[store.groups[0].name]["0"]`. Level 0 is the full-rate signal. Never read a view/ array for inference; those exist for display.
- **6. Dequantize the samples:** `physical = digital * scale + offset`. scale and offset are attributes of the level-0 array, one entry per channel; the unit is on the group's channels attribute.
- **7. Slice, don't download:** `signal[0:4, 0:500]`. Stream a window of channels and samples; download only when you will touch most of the array.
- **8. Know the HTTP contract:** `index.json`. Only index.json is always proxied and edge-cached. A plain GET for a store object, manifest.json or events.parquet 302s to the public S3 object for non-browser clients, so follow redirects, and HEAD is never redirected.
- **9. Read the attribution before reuse:** `root.attrs["nemar"]`. The store carries its own dataset id, DOI, license, citation and source commit.
- **10. Filter for pipelines:** `has_zarr=1`. This is the converted filter. has_zarr_verified is the stricter one, and its result set can be empty until the daily fidelity sweep reaches a dataset; verification is reported, never a precondition for serving (nemar-cli ADR 0005).
