Skip to main content

Tools for quickly generating `.nwb` files from non-standard Mindscope Neuropixels experiments.

Project description

np_nwb

Tools for quickly generating .nwb files from non-standard Mindscope Neuropixels experiments.

np_nwb

Tools for quickly generating .nwb files from non-standard Mindscope Neuropixels experiments.

Generating an .nwb file will entail:

  • inputting a path to a folder of raw data from a single experiment (session_folder)
  • creating an instance of pynwb.NWBFile and writing to disk (nwb_file)
  • passing nwb_file + session_folder, to various modules that add nwb components
  • each module should:
    • accept or load an instance of pynwb.NWBFile from nwb_file
    • recognize the type of experiment contained in session_folder
    • process raw data in session_folder accordingly
    • append tables to the pynwb.NWBFile instance
    • optionally write to disk
    • return the pynwb.NWBFile instance

Each module should therefore provide a single function or method which implements the following append() interface:

import logging
import pathlib
import tempfile
from typing import Optional

import pynwb

logger = logging.getLogger(__name__)


def append(
    session_folder: str | pathlib.Path,
    nwb_file: str | pathlib.Path | pynwb.NWBFile,
    output_file: Optional[str | pathlib.Path] = None,
    ) -> pynwb.NWBFile:
    """Append one or more new components to an `.nwb` file.

    - callable from within a Python process, by accepting & returning instances of `pynwb.  NWBFile` 
    - callable from the command line, in which case all three input arguments are required, with `nwb_file` specified as a path
    """
    session_folder = pathlib.Path(session_folder)

    # ... process session_folder

    if not isinstance(nwb_file, pynwb.NWBFile):
        nwb_file = load_nwb_from_disk(nwb_file) 
    
    # ... append new components to nwb_file

    if output_file is not None:
        write_nwb_to_disk(nwb_file, output_file)
    
    return nwb_file


def load_nwb_from_disk(
    nwb_path: str | pathlib.Path,
    ) -> pynwb.NWBFile:
    logger.info(f'Loading nwb file at {nwb_path}')
    with pynwb.NWBHDF5IO(nwb_path, mode='r') as f:
        return f.read()


def write_nwb_to_disk(
    nwb_file: pynwb.NWBFile, output_path: Optional[str | pathlib.Path] = None
    ) -> None:
    if output_path is None:
        output_path = pathlib.Path(tempfile.mkdtemp()) / f'{nwb_file.session_id}.nwb'
    
    nwb_file.set_modified()

    logger.info(f'Writing nwb file `{nwb_file.session_id!r}` to {output_path}')
    with pynwb.NWBHDF5IO(output_path, mode='w') as f:
        f.write(nwb_file, cache_spec=True)
    logger.debug(f'Writing complete for nwb file `{nwb_file.session_id!r}`')
  

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

np_nwb-0.1.1.tar.gz (3.9 kB view details)

Uploaded Source

Built Distribution

np_nwb-0.1.1-py3-none-any.whl (4.9 kB view details)

Uploaded Python 3

File details

Details for the file np_nwb-0.1.1.tar.gz.

File metadata

  • Download URL: np_nwb-0.1.1.tar.gz
  • Upload date:
  • Size: 3.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: pdm/2.7.0 CPython/3.11.1

File hashes

Hashes for np_nwb-0.1.1.tar.gz
Algorithm Hash digest
SHA256 c403a235beed782fa683e2078f410a03ba8647ac61102133547a9e276a9e7dbf
MD5 0b9096fa9d06789fc11c61fb48c55dc7
BLAKE2b-256 976717a24284199db7758d11a0a8a21da2b113bacbfb3bf28b6dbf7cb7f207c6

See more details on using hashes here.

Provenance

File details

Details for the file np_nwb-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: np_nwb-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 4.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: pdm/2.7.0 CPython/3.11.1

File hashes

Hashes for np_nwb-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 701f71a0c4f7d0258f79528f10a0ea93500c72f9e0dc9d38285abef57bc421f5
MD5 3447a3440c3137dc2e4d57527f5f0200
BLAKE2b-256 0a71c6ac19f35ab70c4ca43c06a2401195193d123ffac9a62154c82bfdd1eeb1

See more details on using hashes here.

Provenance

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