rec_to_nwb is a python conda package for converting SpikeGadgets rec files to NWB files.
It converts experiment data from /raw
or /preprocessing
folder to .nwb
file. It utilizes rec_to_binaries package for preprocessing phase.
https://github.com/LorenFrankLab/rec_to_binaries
Currently we suggest following the instructions to install https://github.com/LorenFrankLab/franklabnwb, as that includes additional files that are helpful, but you can install this using the instructions below.
-
Install Spike Gadgets
https://bitbucket.org/mkarlsso/trodes/downloads/ -
Add SpikeGadgets to path.
If Spike Gadgets is in default location:export PATH="$HOME/SpikeGadgets/:$PATH"
-
Install anaconda or miniconda if you haven't already.
-
clone repository
git clone https://github.com/LorenFrankLab/rec_to_nwb.git cd rec_to_nwb
-
Create conda environment.
conda env create -f environment.yml
-
Install rec_to_nwb
pip install -e .
-
Documentation can be viewed at
https://novelaneuro.github.io/rec_to_nwb-docs/
-
Download example notebook file from
https://anaconda.org/NovelaKRK/nwb_generation/notebook -
In terminal navigate to notebook file location
rec_to_nwb/rec_to_nwb/notebooks
-
Run jupyter notebook
jupyter notebook nwb_generation.ipynb
-
Metadata.yml description:
Important note: right now the code assumes that the electrode groups listed below (each of which corresponds to one or more NTrode in the file) are in ascending order by NTrode number. If this is not the case the data could be scrambled. Thus, the first listed electrode group should correspond to, for example, NTrode 1 (or perhaps NTrodes 1-4) while the second would correspond to NTrode 2 (or 5-8), etc.
# general information about the experiment experimenter_name: Alison Comrie lab: Loren Frank institution: University of California, San Francisco experiment_description: Reinforcement learning session_description: Reinforcement leaarning session_id: beans_01 subject: description: Long Evans Rat genotype: Wild Type sex: Male species: Rat subject_id: Beans weight: Unknown #Units of analog and behavioral_events units: analog: 'unspecified' behavioral_events: 'unspecified' #data_acq_device used in experiment data_acq_device: - name: acq_0 system: sample_system amplifier: sample_amplifier adc_circuit: sample_adc_circuit - name: acq_1 system: sample_system_2 #CameraDevice that were used in experiment cameras: - id: 0 meters_per_pixel: 0.02 - id: 1 meters_per_pixel: 0.03 - id: 2 meters_per_pixel: 0.05 #Tasks represent epochs in experiment. Contains task_name, task_description, camera_id that were used in this task and task_epochs that this task correspond to. Stored in behavioral section in output nwb file. tasks: - task_name: Sleep, task_description: The animal sleeps in a small empty box. camera_id: - 0 task_epochs: - 1 - 3 - 5 - task_name: Stem+Leaf, task_description: Spatial Bandit, camera_id: - 1 task_epochs: - 2 - 4 # Associated files which describe content of files stored inside nwb as text. associated_files: - name: example_name1 description: exmaple description 1 path: C:/Users/sampleuser/PycharmProjects/rec_to_nwb/test/processing/res/test_text_files/test1_file task_epochs: [1, 2] - name: example_name2 description: exmaple description 2 path: C:/Users/sampleuser/PycharmProjects/rec_to_nwb/test/processing/res/test_text_files/test2_file task_epochs: [3, 4] # Associated video files describe .h264 files stored as ImageSeries in nwb. associated_video_files: - name: 20190718_beans_01_s1.1.h264 camera_id : 0 # Times period multiplier is used in pos/mda invalid/valid times, to multiply the period when detecting gaps, to avoid creating invalid times in case of only small deviations. (optional parameter, default 1.5) times_period_multiplier: 1.5 # Din/Dout events which filter out files from DIO data in data directory. Each name has to be unique. Stored in behavioral_events section in output nwb file. behavioral_events: - name: Poke2 description: Din2 # Device name. Stored in output nwb file. device: name: - Trodes # Electrode Groups list used in experiment. Each Id has to be unique, device_type has to refer to existing device_type in probe.yml. Target_x,y,z fields describe the specified location where this group should be. Possible value of units: 'um' or 'mm' electrode_groups: - id: 0 location: mPFC device_type: 128c-4s8mm6cm-20um-40um-sl description: 'Probe 1' targeted_location: 'Sample predicted location' targeted_x: 0.0 targeted_y: 0.0 targeted_z: 0.0 units: 'um' - id: 1 location: mPFC device_type: 128c-4s8mm6cm-20um-40um-sl description: 'Probe 2' targeted_location: 'Sample predicted location' targeted_x: 0.0 targeted_y: 0.0 targeted_z: 0.0 units: 'um' # Ntrodes list which refer 1:1 to <SpikeNTrode> elements from xml header existing in rec binary file. # ntrode_id has to match to SpikeNTrode id, electrode_group_id refers to electrode group, # bad_channels is a list of broken channels in the map, where map corresponds to the electrode channels - ntrode_id: 1 electrode_group_id: 0 bad_channels: [0,2] map: 0: 0 1: 1 2: 2 3: 3 - ntrode_id: 2 electrode_group_id: 0 bad_channels: [0,2] map: 0: 4 1: 5 2: 6 3: 7
-
Probe.yml description:
probe_type: tetrode_12.5 # Type of the probe that refers to device_type in electrode_group in metadata.yml units: 'um' # possible value for unit is um or mm probe_description: 'four wire electrode' num_shanks: 1 # Number of shanks (sets of electrodes) in this probe type contact_side_numbering: true contact_size: 12.5 shanks: - shank_id: 0 # Shank_id has to be unique electrodes: # List of electrodes that is used to initialize the electrode_table in output nwb file - id: 0 # Electrode id has to be unique rel_x: 0.0 rel_y: 0.0 rel_z: 0.0 - id: 1 rel_x: 0.0 rel_y: 0.0 rel_z: 0.0
-
Set up paths to metadata and probe
yaml
files, which corresponds to the experiment you are going to process.metadata = MetadataManager( '../test/processing/res/metadata.yml', ['../test/processing/res/probe1.yml', '../test/processing/res/probe2.yml', '../test/processing/res/probe3.yml'] )
-
Input files
metadata.yml
as well asprobe[1-N].yml
are validated against rec files headers. -
We provide two class to generate the NWB file.
RawToNWBBuilder
- To generate NWB file from raw data.NWBFileBuilder
- To generate NWB file from preprocessed data.
Initialize RawToNWBBuilder, which requires animal_name
, data_path
and dates
which exist in your experiment folder. Next build the NWB using build_nwb()
.
If you don't want mda or pos invalid/valid times in your nwb, set accordingly flag to false in 'build_nwb' method.
builder = RawToNWBBuilder(
animal_name='beans',
data_path='../test/test_data/',
dates=['20190718'],
nwb_metadata=metadata,
output_path='/out/nwb'
)
builder.build_nwb()
raw_to_nwb_builder arguments
**data_path** = `string` path to the parent folder of animal_name <br>
**animal_name** = `string` name of the folder that contain few dates-folders <br>
**dates** = `list of strings` names of folders that contain experiment data <br>
**nwb_metadata** = `MetadataManager` object with metadata.yml and probes.yml <br>
**output_path** = `string` path specifying location and name of result file (dafault 'output.nwb') <br>
**video_path** = `string` path specifying location of video files .h264 where those are copied <b4>
**extract_analog** = `boolean` flag specifying if analog data should be extracted from raw (default True) <br>
**extract_spikes** = `boolean` flag specifying if spikes data should be extracted from raw (default False) <br>
**extract_lfps** = `boolean` flag specifying if lfp data should be extracted from raw (default False) <br>
**extract_dio** = `boolean` flag specifying if dio data should be extracted from raw (default True) <br>
**extract_mda** = `boolean` flag specifying if mda data should be extracted from raw (default True) <br>
**parallel_instances** = `int` number of threads, optimal value highly depends on hardware (default 4) <br>
**overwrite** = `boolean` If true, will overwrite existing files. (default True) <br>
**trodes_rec_export_args** = `tuple of strings` path to rec header file which overrides all headers existing in rec binary files e.g `_DEFAULT_TRODES_REC_EXPORT_ARGS = ('-reconfig', str(path) + '/test/processing/res/reconfig_header.xml')` <br>
build_nwb arguments:
**process_mda_valid_time** = 'boolean' True if the mda valid times should be build and append to nwb.
Need the mda data inside the nwb. (default True) <br>
**process_mda_invalid_time** = 'boolean' True if the mda invalid times should be build and append to nwb.
Need the mda data inside the nwb. (default True) <br>
**process_pos_valid_time** = 'boolean' True if the pos valid times should be build and append to nwb.
Need the pos data inside the nwb. (default True) <br>
**process_pos_invalid_time** = 'boolean' True if the pos invalid times should be build and append to nwb.
Need the pos data inside the nwb. (default True) <br>
If you have already preprocessed data or RawToNwb process crashed during building file you can initialize NWBFileBuilder, which requires data_path
, animal_name
, date
, nwb_metadata
.
Next build the NWB using build()
and write it to file by write(content)
method.
After that, you can add mda or pos invalid/valid data to your NWB, using 'build_and_append_to_nwb' method.
builder = NWBFileBuilder(
data_path='../data/',
animal_name='beans',
date='20190718',
nwb_metadata=metadata,
process_dio=True,
process_mda=True,
process_analog=True
)
content = builder.build()
builder.write(content)
NWBFileBuilder arguments
**data_path** = `string` path to directory containing all experiments data <br>
**animal_name** = `string` directory name which represents animal subject of experiment <br>
**date** = `string` date of experiment <br>
**nwb_metadata** = `MetadataManager` object contains metadata about experiment <br>
**process_dio** = `boolean` flag if dio data should be processed <br>
**process_mda** = `boolean` flag if mda data should be processed <br>
**process_analog** = `boolean` flag if analog data should be processed <br>
**video_path** = `string` path specifying location of video files .h264 where those are copied <b4>
**output_file** = `string` path and name specifying where .nwb file gonna be written <br>
build_and_append_to_nwb arguments:
**process_mda_valid_time** = 'boolean' True if the mda valid times should be build and append to nwb.
Need the mda data inside the nwb. (default True) <br>
**process_mda_invalid_time** = 'boolean' True if the mda invalid times should be build and append to nwb.
Need the mda data inside the nwb. (default True) <br>
**process_pos_valid_time** = 'boolean' True if the pos valid times should be build and append to nwb.
Need the pos data inside the nwb. (default True) <br>
**process_pos_invalid_time** = 'boolean' True if the pos invalid times should be build and append to nwb.
Need the pos data inside the nwb. (default True) <br>
-
Make sure that the data structure in given directory (in that case
test_data
) looks similar to following example:--test_data | `-- beans | | | `-- raw | | | `-- 20190718 | |-- 20190718_beans_01_s1.1.h264 | |-- 20190718_beans_01_s1.1.trackgeometry | |-- 20190718_beans_01_s1.1.videoPositionTracking | |-- 20190718_beans_01_s1.1.videoTimeStamps | |-- 20190718_beans_01_s1.1.videoTimeStamps.cameraHWSync | |-- 20190718_beans_01_s1.rec | `-- 20190718_beans_01_s1.stateScriptLog `-- README.md
-
Double check if there is enough disc space on your Laptop/PC.
-
Run processing (generation may take from mins to even hours and it depends on the size of experiment datasets).
-
rec_to_nwb.log
contains useful information about processing phases as well as all of the exceptions and errors. -
Example structure of preprocessed experiment data
|-- beans
| |-- preprocessing
| | |
| | |-- 20190718
| | |-- 20190718_beans_01_s1.1.pos
| | | |-- 20190718_beans_01_s1.1.pos_cameraHWFrameCount.dat
| | | |-- 20190718_beans_01_s1.1.pos_online.dat
| | | |-- 20190718_beans_01_s1.1.pos_timestamps.dat
| | |-- 20190718_beans_01_s1.analog
| | | |-- 20190718_beans_01_s1.analog_AccelX.dat
| | | |-- 20190718_beans_01_s1.analog_AccelY.dat
| | | |-- 20190718_beans_01_s1.analog_AccelZ.dat
| | | |-- 20190718_beans_01_s1.analog_GyroX.dat
| | | |-- 20190718_beans_01_s1.analog_GyroY.dat
| | | |-- 20190718_beans_01_s1.analog_GyroZ.dat
| | | |-- 20190718_beans_01_s1.analog_MagX.dat
| | | |-- 20190718_beans_01_s1.analog_MagY.dat
| | | |-- 20190718_beans_01_s1.analog_MagZ.dat
| | | |-- 20190718_beans_01_s1.exportanalog.log
| | | |-- 20190718_beans_01_s1.timestamps.dat
| | |-- 20190718_beans_01_s1.DIO
| | | |-- 20190718_beans_01_s1.dio_Din10.dat
| | | |-- 20190718_beans_01_s1.dio_Din11.dat
| | | |-- 20190718_beans_01_s1.dio_Din12.dat
| | | |-- 20190718_beans_01_s1.dio_Din13.dat
| | | |-- 20190718_beans_01_s1.dio_Din14.dat
| | | |-- 20190718_beans_01_s1.dio_Din15.dat
| | | |-- 20190718_beans_01_s1.dio_Din16.dat
| | | |-- 20190718_beans_01_s1.dio_Din17.dat
| | | |-- 20190718_beans_01_s1.dio_Din18.dat
| | | |-- 20190718_beans_01_s1.dio_Din19.dat
| | | |-- 20190718_beans_01_s1.dio_Din1.dat
| | | |-- 20190718_beans_01_s1.dio_Din20.dat
| | | |-- 20190718_beans_01_s1.dio_Din21.dat
| | | |-- 20190718_beans_01_s1.dio_Din22.dat
| | | |-- 20190718_beans_01_s1.dio_Din23.dat
| | | |-- 20190718_beans_01_s1.dio_Din24.dat
| | | |-- 20190718_beans_01_s1.dio_Din25.dat
| | | |-- 20190718_beans_01_s1.dio_Din26.dat
| | | |-- 20190718_beans_01_s1.dio_Din27.dat
| | | |-- 20190718_beans_01_s1.dio_Din28.dat
| | | |-- 20190718_beans_01_s1.dio_Din29.dat
| | | |-- 20190718_beans_01_s1.dio_Din2.dat
| | | |-- 20190718_beans_01_s1.dio_Din30.dat
| | | |-- 20190718_beans_01_s1.dio_Din31.dat
| | | |-- 20190718_beans_01_s1.dio_Din32.dat
| | | |-- 20190718_beans_01_s1.dio_Din3.dat
| | | |-- 20190718_beans_01_s1.dio_Din4.dat
| | | |-- 20190718_beans_01_s1.dio_Din5.dat
| | | |-- 20190718_beans_01_s1.dio_Din6.dat
| | | |-- 20190718_beans_01_s1.dio_Din7.dat
| | | |-- 20190718_beans_01_s1.dio_Din8.dat
| | | |-- 20190718_beans_01_s1.dio_Din9.dat
| | | |-- 20190718_beans_01_s1.dio_Dout10.dat
| | | |-- 20190718_beans_01_s1.dio_Dout11.dat
| | | |-- 20190718_beans_01_s1.dio_Dout12.dat
| | | |-- 20190718_beans_01_s1.dio_Dout13.dat
| | | |-- 20190718_beans_01_s1.dio_Dout14.dat
| | | |-- 20190718_beans_01_s1.dio_Dout15.dat
| | | |-- 20190718_beans_01_s1.dio_Dout16.dat
| | | |-- 20190718_beans_01_s1.dio_Dout17.dat
| | | |-- 20190718_beans_01_s1.dio_Dout18.dat
| | | |-- 20190718_beans_01_s1.dio_Dout19.dat
| | | |-- 20190718_beans_01_s1.dio_Dout1.dat
| | | |-- 20190718_beans_01_s1.dio_Dout20.dat
| | | |-- 20190718_beans_01_s1.dio_Dout21.dat
| | | |-- 20190718_beans_01_s1.dio_Dout22.dat
| | | |-- 20190718_beans_01_s1.dio_Dout23.dat
| | | |-- 20190718_beans_01_s1.dio_Dout24.dat
| | | |-- 20190718_beans_01_s1.dio_Dout25.dat
| | | |-- 20190718_beans_01_s1.dio_Dout26.dat
| | | |-- 20190718_beans_01_s1.dio_Dout27.dat
| | | |-- 20190718_beans_01_s1.dio_Dout28.dat
| | | |-- 20190718_beans_01_s1.dio_Dout29.dat
| | | |-- 20190718_beans_01_s1.dio_Dout2.dat
| | | |-- 20190718_beans_01_s1.dio_Dout30.dat
| | | |-- 20190718_beans_01_s1.dio_Dout31.dat
| | | |-- 20190718_beans_01_s1.dio_Dout32.dat
| | | |-- 20190718_beans_01_s1.dio_Dout3.dat
| | | |-- 20190718_beans_01_s1.dio_Dout4.dat
| | | |-- 20190718_beans_01_s1.dio_Dout5.dat
| | | |-- 20190718_beans_01_s1.dio_Dout6.dat
| | | |-- 20190718_beans_01_s1.dio_Dout7.dat
| | | |-- 20190718_beans_01_s1.dio_Dout8.dat
| | | |-- 20190718_beans_01_s1.dio_Dout9.dat
| | | |-- 20190718_beans_01_s1.exportdio.log
| | |-- 20190718_beans_01_s1.LFP
| | | |-- 20190718_beans_01_s1.exportLFP.log
| | | |-- 20190718_beans_01_s1.LFP_nt10ch1.dat
| | | |-- 20190718_beans_01_s1.LFP_nt11ch1.dat
| | | |-- 20190718_beans_01_s1.LFP_nt12ch1.dat
| | | |-- 20190718_beans_01_s1.LFP_nt13ch1.dat
| | | |-- 20190718_beans_01_s1.LFP_nt14ch1.dat
| | | |-- 20190718_beans_01_s1.LFP_nt15ch1.dat
| | | |-- 20190718_beans_01_s1.LFP_nt16ch1.dat
| | | |-- 20190718_beans_01_s1.LFP_nt17ch1.dat
| | | |-- 20190718_beans_01_s1.LFP_nt18ch1.dat
| | | |-- 20190718_beans_01_s1.LFP_nt19ch1.dat
| | | |-- 20190718_beans_01_s1.LFP_nt1ch1.dat
| | | |-- 20190718_beans_01_s1.LFP_nt20ch1.dat
| | | |-- 20190718_beans_01_s1.LFP_nt21ch1.dat
| | | |-- 20190718_beans_01_s1.LFP_nt22ch1.dat
| | | |-- 20190718_beans_01_s1.LFP_nt23ch1.dat
| | | |-- 20190718_beans_01_s1.LFP_nt24ch1.dat
| | | |-- 20190718_beans_01_s1.LFP_nt25ch1.dat
| | | |-- 20190718_beans_01_s1.LFP_nt26ch1.dat
| | | |-- 20190718_beans_01_s1.LFP_nt27ch1.dat
| | | |-- 20190718_beans_01_s1.LFP_nt28ch1.dat
| | | |-- 20190718_beans_01_s1.LFP_nt29ch1.dat
| | | |-- 20190718_beans_01_s1.LFP_nt2ch1.dat
| | | |-- 20190718_beans_01_s1.LFP_nt30ch1.dat
| | | |-- 20190718_beans_01_s1.LFP_nt31ch1.dat
| | | |-- 20190718_beans_01_s1.LFP_nt32ch1.dat
| | | |-- 20190718_beans_01_s1.LFP_nt3ch1.dat
| | | |-- 20190718_beans_01_s1.LFP_nt4ch1.dat
| | | |-- 20190718_beans_01_s1.LFP_nt5ch1.dat
| | | |-- 20190718_beans_01_s1.LFP_nt6ch1.dat
| | | |-- 20190718_beans_01_s1.LFP_nt7ch1.dat
| | | |-- 20190718_beans_01_s1.LFP_nt8ch1.dat
| | | |-- 20190718_beans_01_s1.LFP_nt9ch1.dat
| | | |-- 20190718_beans_01_s1.timestamps.dat
| | |-- 20190718_beans_01_s1.mda
| | | |-- 20190718_beans_01_s1.exportmda.log
| | | |-- 20190718_beans_01_s1.nt10.mda
| | | |-- 20190718_beans_01_s1.nt11.mda
| | | |-- 20190718_beans_01_s1.nt12.mda
| | | |-- 20190718_beans_01_s1.nt13.mda
| | | |-- 20190718_beans_01_s1.nt14.mda
| | | |-- 20190718_beans_01_s1.nt15.mda
| | | |-- 20190718_beans_01_s1.nt16.mda
| | | |-- 20190718_beans_01_s1.nt17.mda
| | | |-- 20190718_beans_01_s1.nt18.mda
| | | |-- 20190718_beans_01_s1.nt19.mda
| | | |-- 20190718_beans_01_s1.nt1.mda
| | | |-- 20190718_beans_01_s1.nt20.mda
| | | |-- 20190718_beans_01_s1.nt21.mda
| | | |-- 20190718_beans_01_s1.nt22.mda
| | | |-- 20190718_beans_01_s1.nt23.mda
| | | |-- 20190718_beans_01_s1.nt24.mda
| | | |-- 20190718_beans_01_s1.nt25.mda
| | | |-- 20190718_beans_01_s1.nt26.mda
| | | |-- 20190718_beans_01_s1.nt27.mda
| | | |-- 20190718_beans_01_s1.nt28.mda
| | | |-- 20190718_beans_01_s1.nt29.mda
| | | |-- 20190718_beans_01_s1.nt2.mda
| | | |-- 20190718_beans_01_s1.nt30.mda
| | | |-- 20190718_beans_01_s1.nt31.mda
| | | |-- 20190718_beans_01_s1.nt32.mda
| | | |-- 20190718_beans_01_s1.nt3.mda
| | | |-- 20190718_beans_01_s1.nt4.mda
| | | |-- 20190718_beans_01_s1.nt5.mda
| | | |-- 20190718_beans_01_s1.nt6.mda
| | | |-- 20190718_beans_01_s1.nt7.mda
| | | |-- 20190718_beans_01_s1.nt8.mda
| | | |-- 20190718_beans_01_s1.nt9.mda
| | | |-- 20190718_beans_01_s1.timestamps.mda
| | |-- 20190718_beans_01_s1.mountain
| | |-- 20190718_beans_01_s1.spikes
| | | |-- 20190718_beans_01_s1.exportspikes.log
| | | |-- 20190718_beans_01_s1.spikes_nt10.dat
| | | |-- 20190718_beans_01_s1.spikes_nt11.dat
| | | |-- 20190718_beans_01_s1.spikes_nt12.dat
| | | |-- 20190718_beans_01_s1.spikes_nt13.dat
| | | |-- 20190718_beans_01_s1.spikes_nt14.dat
| | | |-- 20190718_beans_01_s1.spikes_nt15.dat
| | | |-- 20190718_beans_01_s1.spikes_nt16.dat
| | | |-- 20190718_beans_01_s1.spikes_nt17.dat
| | | |-- 20190718_beans_01_s1.spikes_nt18.dat
| | | |-- 20190718_beans_01_s1.spikes_nt19.dat
| | | |-- 20190718_beans_01_s1.spikes_nt1.dat
| | | |-- 20190718_beans_01_s1.spikes_nt20.dat
| | | |-- 20190718_beans_01_s1.spikes_nt21.dat
| | | |-- 20190718_beans_01_s1.spikes_nt22.dat
| | | |-- 20190718_beans_01_s1.spikes_nt23.dat
| | | |-- 20190718_beans_01_s1.spikes_nt24.dat
| | | |-- 20190718_beans_01_s1.spikes_nt25.dat
| | | |-- 20190718_beans_01_s1.spikes_nt26.dat
| | | |-- 20190718_beans_01_s1.spikes_nt27.dat
| | | |-- 20190718_beans_01_s1.spikes_nt28.dat
| | | |-- 20190718_beans_01_s1.spikes_nt29.dat
| | | |-- 20190718_beans_01_s1.spikes_nt2.dat
| | | |-- 20190718_beans_01_s1.spikes_nt30.dat
| | | |-- 20190718_beans_01_s1.spikes_nt31.dat
| | | |-- 20190718_beans_01_s1.spikes_nt32.dat
| | | |-- 20190718_beans_01_s1.spikes_nt3.dat
| | | |-- 20190718_beans_01_s1.spikes_nt4.dat
| | | |-- 20190718_beans_01_s1.spikes_nt5.dat
| | | |-- 20190718_beans_01_s1.spikes_nt6.dat
| | | |-- 20190718_beans_01_s1.spikes_nt7.dat
| | | |-- 20190718_beans_01_s1.spikes_nt8.dat
| | | |-- 20190718_beans_01_s1.spikes_nt9.dat
| | |-- 20190718_beans_01_s1.time
| | |-- 20190718_beans_01_s1.continuoustime.dat
| | |-- 20190718_beans_01_s1.exporttime.log
| | |-- 20190718_beans_01_s1.time.dat
| |-- raw
| |-- 20190718
| |-- 20190718_beans_01_s1.1.h264
| |-- 20190718_beans_01_s1.1.trackgeometry
| |-- 20190718_beans_01_s1.1.videoPositionTracking
| |-- 20190718_beans_01_s1.1.videoTimeStamps
| |-- 20190718_beans_01_s1.1.videoTimeStamps.cameraHWSync
| |-- 20190718_beans_01_s1.rec
| |-- 20190718_beans_01_s1.stateScriptLog
|-- README.md
When processing completes, a nwb file is created in the output_path directory