Skip to main content

A python package to convert SpikeGadgets data to NWB

Project description

trodes_to_nwb

Tests codecov PyPI version

Converts data from SpikeGadgets .rec files to the NWB 2.0+ Data Format.

It then validates the NWB file using the NWB Inspector for compatilibity for upload to the DANDI archive.

This replaces rec_to_nwb.

Installation

You can install trodes_to_nwb in two ways.

For most users, we recommend installing trodes_to_nwb in a virtual or conda environment via pip.

Developers should install from source.

  1. Install from PyPI

    pip install trodes_to_nwb
    
  2. Install from source

    Note: We currently reccomend using mamba as a package manager. If using conda, please replace mamba with conda in the command below.

    git clone https://github.com/LorenFrankLab/trodes_to_nwb.git
    
    cd trodes_to_nwb
    
    mamba env create -f environment.yml
    
    mamba activate trodes_to_nwb
    
    pip install -e .
    

Usage

  1. Place your files in a folder. Subfolders are okay. The files with the following extensions should be in your directory:

    • .rec: binary file containing the ephys recording, accelerometer, gyroscope, magnetometer, DIO data, header
    • .videoPositionTracking: trodes tracked position (optional)
    • .h264: video file
    • .cameraHWSync: position timestamps
    • .stateScriptLog: state script controls the experimenter parameters

    These files need to be named in the following format {date}_{animal}_{epoch}_{tag}.{extension} where date is in the YYYYMMDD format, epoch is an integer with zero padding (e.g. 02 and not 2), and tag can be any handy short descriptor. For example, 20230622_randy_02_r1.rec is the recording file for animal randy, second epoch, run 1 (r1) for June 22, 2023.

    (Note: By default, Trodes saves video-related files (.h264, videoPositionTracking, cameraHWSync) slightly different from this format as {date}_{animal}_{epoch}_{tag}.{camera number}.{extension}. This is accepted by this conversion package, and used to match camera to position tracking in epochs with mulitple cameras)

  2. Create a metadata yaml file for each recording session. We HIGHLY recommend using the NWB YAML Creator to create the metadata yaml file to ensure compatability and correct format. You can also see this example metadata yaml file.

    The metadata yaml file should be named {date}_{animal}.metadata.yml where date is in the YYYYMMDD format and placed in the same directory as the .rec files.

    Here is an example valid directory structure:

    `-- 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
       |           `-- 20190718_beans_metadata.yml
       |
       `-- README.md
    
  3. Run the code in python. This will create a NWB file for each .rec file in the output directory.

    from trodes_to_nwb.convert import create_nwbs
    
    path = "/path/to/your/data" # from step 1
    output_dir = "/path/to/your/output/directory"
    
    create_nwbs(
        path,
        output_dir,
        header_reconfig_path=None,
        probe_metadata_paths=None,
        convert_video=False,
        n_workers=1,
        query_expression=None,
    )
    

    For the example directory structure above, the path would look like this:

    path = "/path/to/your/data/beans/raw"
    

    Note the following optional arguments:

    • header_reconfig_path: If you want to change the header information, you can provide a path to a yaml file with the new header information. See this example header reconfig yaml file. For example, this can be important for data recorded from non-tetrode devices.
    • probe_metadata_paths: By default, several common probe device types configurations are included in the package. If you are using a probe that is not included, you can provide a path to a yaml file with the probe metadata. See this example probe metadata yaml file for an example.
    • convert_video: Converts the .h264 video file to .mp4. This requires ffmpeg to be installed on your system.
    • n_workers: Number of workers to use for parallel processing. Defaults to 1.
    • query_expression: A query expression to select which files to convert. For example, if you have several animals in your folder, you could write "animal == 'sample'" to select only the sample animal. Defaults to None which converts all files in the directory.

    For complete example code of the conversion, see the tutorial notebook

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

trodes_to_nwb-0.1.5.tar.gz (120.8 kB view details)

Uploaded Source

Built Distribution

trodes_to_nwb-0.1.5-py3-none-any.whl (114.0 kB view details)

Uploaded Python 3

File details

Details for the file trodes_to_nwb-0.1.5.tar.gz.

File metadata

  • Download URL: trodes_to_nwb-0.1.5.tar.gz
  • Upload date:
  • Size: 120.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.0.0 CPython/3.12.3

File hashes

Hashes for trodes_to_nwb-0.1.5.tar.gz
Algorithm Hash digest
SHA256 7b6bd5471f3a42aeed5ad5fbd210dc03050e99180c5807eed3e87302f7f4a39f
MD5 9a48a9b7ef7f0740624dd917a1c3a0b5
BLAKE2b-256 c903b06c490f092b9f6a173ba3ea6d86d1054e7b3ba628211b6b2a8c7596df6a

See more details on using hashes here.

File details

Details for the file trodes_to_nwb-0.1.5-py3-none-any.whl.

File metadata

File hashes

Hashes for trodes_to_nwb-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 42379b73a46bd87013f9bb661bdada5a7bee169fa6001ccc28f9fb5bc2509c75
MD5 9b1b8685bcede699aa6e3bbd78dd18b7
BLAKE2b-256 ddce78343fbca63876f429255d3626456fedb58f493dfacf979079e6d890f680

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page