Data Access
===============
.. note::
**The full AVS dataset -- all 5 subjects, all 10 sessions each -- is publicly available
today**, on demand, via :func:`pyavs.open_remote` -- no manual staging, no AWS account or
credentials required, and no request or registration needed. See
:ref:`data-access-available-now` below for a working example.
.. _data-access-available-now:
On-Demand Access via AWS
---------------------------------------------
The release bucket ``kietzmannlab-avs`` (region ``us-west-2``) is public-read on Amazon S3, as
part of the `AWS Open Data Sponsorship Program `_ (its
Registry of Open Data listing is pending review; the bucket itself is fully live and usable
regardless of that listing's status). It holds the complete released dataset -- all 5 subjects,
all 10 sessions each -- raw MEG, Maxwell-filtered MEG, raw and preprocessed eye tracking,
fixation- and saccade-locked epochs, and the experiment/behavioural logs, plus the scene-image
licence table and the full epoch catalog.
pyAVS's built-in remote client, :func:`pyavs.open_remote` (:class:`pyavs.remote.AVSRemote`),
fetches each file a call needs directly from the bucket the first time it's needed, caching it
locally (default ``~/.cache/pyavs/kietzmannlab-avs``) so repeat calls and reruns skip the
network entirely:
.. code-block:: python
import pyavs
avs = pyavs.open_remote()
# Same call signatures as the local loaders -- just no set_data_path() needed first.
raw = avs.load_meg_raw(subject_id=1, session=1, run=1, preload=True)
explog = avs.load_experiment_log(subject_id=1, session=1)
epochs = avs.load_epochs(subject_id=1, session=1, event_type='fixation_scene')
# Once populated, the cache is itself a valid (partial) data_path:
pyavs.set_data_path(avs.data_path)
For fixation/saccade-locked epochs specifically, :meth:`~pyavs.remote.AVSRemote.epochs` opens a
content-indexed query over the small pre-built catalog -- filtering by fixated object, scene,
or kinematics happens locally, and only the *matching* epochs are range-read from S3, without
downloading whole session files:
.. code-block:: python
dogs = avs.epochs(event_type='fixation_scene', subject_id=1).where("object_label == 'dog'")
dog_epochs = dogs.load() # range-reads only the matching epochs
A query for a subject/session/object combination that doesn't exist in the released data raises
:class:`~pyavs.remote.RemoteFileNotFoundError` on ``.load()``. See :doc:`quickstart` for a
fuller walkthrough, the `Colab quickstart notebook
`__
for an interactive, no-install version, and :doc:`api/remote` for the full API.
Where the Dataset Is Hosted
-------------------------------------------
**AWS Open Data is the sole hosting track for the AVS release.** The complete dataset lives on
the public ``kietzmannlab-avs`` S3 bucket described above -- no separate repository, no
registration, and no full-tree download required, since :func:`pyavs.open_remote` already
supports fetching exactly the subjects/sessions/files you need.
The dataset is part of the `AWS Open Data Sponsorship Program
`_; its listing on the `Registry of Open Data on AWS
`_ is pending review and will become the citable reference
point for the dataset going forward once merged (alongside the dataset paper itself -- see
:doc:`reference/citation`).
The shipped ``manifest.tsv`` (see :doc:`dataset/overview`) maps 1:1 onto the S3 object keys,
which makes it a convenient driver for a scripted, resumable ``aws s3 cp``/``sync`` download of
the parts you need, in addition to the on-demand :func:`pyavs.open_remote` route.
Planning Your Download
---------------------------
The full release is **663.1 GiB** across all 5 subjects. Most users will not want all of it,
and the layout (see :ref:`data-access-available-now`) is designed so you do not have to take
it:
.. list-table::
:header-rows: 1
* - If you want to...
- Download
* - Work with fixation/saccade-locked MEG epochs
- ``derivatives/pyavs/sub-0X/ses-0Y/epochs/`` (270.9 GiB total; per-session files)
* - Filter epochs *before* downloading any MEG
- The ``*_metadata.parquet`` files only -- a few hundred KB each, and they carry ``sceneID``,
``object_label`` and all event kinematics
* - Do your own MEG preprocessing from a clean starting point
- ``derivatives/pyavs/.../meg/`` (SSS + annotations + ICA, 129.1 GiB)
* - Start from genuinely unprocessed data
- ``sub-0X/ses-0Y/meg/`` (254.2 GiB)
* - Do eye-tracking-only analyses
- ``derivatives/pyavs/.../eyetrack/`` (1.7 GiB) plus ``stimuli/``
* - Source-reconstruct
- ``derivatives/freesurfer/`` (< 1 GiB) plus whichever sensor data you need
* - Work on stimuli/annotations alone
- ``stimuli/`` (a few hundred MB)
Because the epoch metadata tables are tiny and separate from the epoch data itself, the
practical workflow is: download metadata, work out which sessions and epochs you need, then
fetch only those files.
.. note::
Small files may be published grouped into ZIP archives (per subject/session) to keep the
file count manageable for the repository, while large files stay individually addressable.
This affects how you fetch things, not what you get. See :doc:`dataset/overview` for the
current state of that decision.
Verifying a Download
-------------------------
``manifest.tsv`` at the root of the release lists every file with its path and size in bytes,
which is enough to confirm a download is complete and untruncated. Per-file checksums are
planned for the published version; the hosting repository additionally records a checksum per
file and exposes it through its API.
What Is Released
---------------------
In short: raw and Maxwell-filtered MEG, raw and preprocessed eye tracking, fixation- and
saccade-locked epochs with per-fixation object labels, behavioural and transcribed-caption
logs, the 4,080 scene images with their COCO/COCO-Stuff annotations and licence table,
defaced structural MRIs, and a ready-to-use FreeSurfer ``SUBJECTS_DIR`` for source
reconstruction.
:doc:`dataset/overview` documents each of these in detail, including the deliberate
exclusions (speech audio, scalp/head surfaces, session-level concatenated raws) and why they
were made.
Terms of Use
-----------------
See :doc:`reference/terms_of_use` for the license (CC BY 4.0), attribution requirements, and
ethical-use terms. Note separately that the scene images carry their own upstream licences; see
``stimuli/avs_scenes_all_licenses.parquet`` before reproducing any of them.
Code
--------
The pyAVS package and the analysis code used in the dataset paper are already public:
.. code-block:: bash
pip install pyavs
# or, for the latest development version:
git clone https://github.com/KietzmannLab/pyavs.git
See :doc:`installation` and :doc:`quickstart` to get started.
Staying Updated
--------------------
Watch or star the `pyavs GitHub repository `_ for
updates, or check back on this page.