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
fromnwb_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
- accept or load an instance of
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
Release history Release notifications | RSS feed
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)
Built Distribution
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | c403a235beed782fa683e2078f410a03ba8647ac61102133547a9e276a9e7dbf |
|
MD5 | 0b9096fa9d06789fc11c61fb48c55dc7 |
|
BLAKE2b-256 | 976717a24284199db7758d11a0a8a21da2b113bacbfb3bf28b6dbf7cb7f207c6 |
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 701f71a0c4f7d0258f79528f10a0ea93500c72f9e0dc9d38285abef57bc421f5 |
|
MD5 | 3447a3440c3137dc2e4d57527f5f0200 |
|
BLAKE2b-256 | 0a71c6ac19f35ab70c4ca43c06a2401195193d123ffac9a62154c82bfdd1eeb1 |