Describing an Experiment

Experiment description file

All experiments are described by a file with the name _ibl_experiment.description.yaml. This description file contains details about the experiment such as, information about the devices used to collect data, or the behavior tasks run during the experiment. The content of this file is used to copy data from the acquisition computer to the lab server and also determines the task pipeline that will be used to extract the data on the lab servers. It’s accuracy in fully describing the experiment is, therefore, very important!

Here is an example of a complete experiment description file for a mesoscope experiment running two consecutive tasks, biasedChoiceWorld followed by passiveChoiceWorld.

devices:
  mesoscope:
    mesoscope:
      collection: raw_imaging_data*
      sync_label: chrono
  cameras:
    belly:
      collection: raw_video_data
      sync_label: audio
      width: 640
      height: 512
      fps: 30
    left:
      collection: raw_video_data
      sync_label: audio
    right:
      collection: raw_video_data
      sync_label: audio
procedures:
- Imaging
projects:
- ibl_mesoscope_active
sync:
  nidq:
    acquisition_software: timeline
    collection: raw_sync_data
    extension: npy
tasks:
- _biasedChoiceWorld:
    collection: raw_task_data_00
    sync_label: bpod
    extractors: [TrialRegisterRaw, ChoiceWorldTrialsTimeline, TrainingStatus]
- passiveChoiceWorld:
    collection: raw_task_data_01
    sync_label: bpod
    extractors: [PassiveRegisterRaw, PassiveTaskTimeline]
version: 1.0.0

Breaking down the components of an experiment description file

Devices

The devices section in the experiment description file lists the set of devices from which data was collection in the experiment. Supported devices are Cameras, Microphone, Mesoscope, Neuropixel, Photometry and Widefield.

The convention for this section is to have the device name followed by a list of sub-devices, e.g.

devices:
  cameras:
    belly:
      collection: raw_video_data
      sync_label: audio
      width: 640
      height: 512
      fps: 30
    left:
      collection: raw_video_data
      sync_label: audio
    right:
      collection: raw_video_data
      sync_label: audio

In the above example, cameras is the device and the sub-devices are belly, left and right.

If there are no sub-devices, the sub-device is given the same name as the device, e.g.

devices:
  mesoscope:
    mesoscope:
      collection: raw_imaging_data*
      sync_label: chrono

Each sub-device must have at least the following two keys - collection - the folder containing the data - sync_label - the name of the common ttl pulses in the channel map used to sync the timestamps

Additional keys can also be specified for specific extractors, e.g. for the belly camera the camera metadata passed into the camera extractor task is defined in this file.

Procedures

The procedures section lists the set of procedures that apply to this experiment. The list of possible procedures can be found here.

As many procedure that apply to the experiment can be added e.g.

procedures:
- Fiber photometry
- Optical stimulation
- Ephys recording with acute probe(s)

Projects

The projects section lists the set of projects that apply to this experiment. The list of possible projects can be found here.

As many projects that apply to the experiment can be added e.g.

projects:
- ibl_neuropixel_brainwide_01
- carandiniharris_midbrain_ibl

Sync

The sync section contains information about the device used to collect the syncing data and the format of the data. Supported sync devices are bpod, nidq, tdms, timeline. Only one sync device can be specified per experiment description file and act as the main clock to which other timeseries are synced.

An example of an experiment run with bpod as the main syncing device is,

sync:
  bpod:
    collection: raw_behavior_data
    extension: bin

Another example for spikeglx electrophysiology recordings with Neuropixel 1B probes use the nidq as main synchronisation.

sync:
  nidq:
    collection: raw_ephys_data
    extension: bin
    acquisition_software: spikeglx

Each sync device must have at least the following two keys - collection - the folder containing the data - extension - the file extension of the sync data

Optional keys include, for example acquisition_software, the software used to acquire the sync pulses

Tasks

The tasks section contains a list of the behavioral protocols run during the experiment. The name of the protocol must be given in the list e.g.

tasks:
- _biasedChoiceWorld:
    collection: raw_task_data_00
    sync_label: bpod
    extractors: [TrialRegisterRaw, ChoiceWorldTrialsTimeline, TrainingStatus]
- passiveChoiceWorld:
    collection: raw_task_data_01
    sync_label: bpod
    extractors: [PassiveRegisterRaw, PassiveTaskTimeline]

Each task must have at least the following two keys - collection - the folder containing the data - sync_label - the name of the common ttl pulses in the channel map used to sync the timestamps

The collection must be unique for each task. i.e. Data from two tasks cannot be stored in the same folder.

If the Tasks used to extract the data are not the default tasks, the extractors to use must be passed in as an additional key. The order of the extractors defines their parent child relationship in the task architecture.

Version

The version section gives version number of the experiment description file