Metadata-Version: 2.1
Name: ndx-bipolar-referencing
Version: 0.1.1
Summary: An NWB:N extension for storing bipolar referencing schema
Home-page: https://github.com/ben-dichter-consulting/ndx-bipolar-referencing
Author: Ben Dichter
Author-email: ben.dichter@gmail.com
License: BSD 3-Clause
Platform: UNKNOWN
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Description-Content-Type: text/markdown
Requires-Dist: pynwb (>=1.1.2)

# ndx-bipolar-referencing Extension for NWB:N

Structure for storing the bipolar schema of a recording in an NWB file.

![schema schema](docs/media/bipolar_reference_schema_schema.png)

## python installation
```bash
$ pip install ndx-bipolar-referencing
```

## python usage

```python
from pynwb import NWBHDF5IO, NWBFile
from pynwb.file import DynamicTable, DynamicTableRegion
from datetime import datetime
from ndx_bipolar_referencing import EcephysExt
from pynwb.ecephys import ElectricalSeries

import numpy as np

nwbfile = NWBFile('description', 'id', datetime.now().astimezone())

device = nwbfile.create_device('device_name')

electrode_group = nwbfile.create_electrode_group('electrode_group',
                                                 'desc', 'loc', device=device)

for _ in range(20):
    nwbfile.add_electrode(np.nan, np.nan, np.nan, np.nan, 'loc', 'filt',
                          electrode_group)

positive_electrodes = DynamicTableRegion('positive_electrodes',
                                         np.arange(0, 20, 2),
                                         'desc',
                                         nwbfile.electrodes)
negative_electrodes = DynamicTableRegion('negative_electrodes',
                                         np.arange(1, 20, 2),
                                         'desc',
                                         nwbfile.electrodes)

bipolar_reference_scheme = DynamicTable(name='bipolar_reference_scheme',
                                        description='desc',
                                        columns=[positive_electrodes,
                                                 negative_electrodes])

ecephys_ext = EcephysExt(bipolar_reference_scheme=bipolar_reference_scheme)
nwbfile.add_lab_meta_data(ecephys_ext)

bipolar_scheme = DynamicTableRegion(
    name='electrodes',
    data=np.arange(0, 10),
    description='desc',
    table=nwbfile.lab_meta_data['extracellular_electrophysiology_extensions'].bipolar_reference_scheme)

ec_series = ElectricalSeries(name='test_ec_series',
                             description='desc',
                             data=np.random.rand(100, 10),
                             rate=1000.,
                             electrodes=bipolar_scheme)

nwbfile.add_acquisition(ec_series)

with NWBHDF5IO('test_nwb.nwb', 'w') as io:
    io.write(nwbfile)

with NWBHDF5IO('test_nwb.nwb', 'r', load_namespaces=True) as io:
    nwbfile = io.read()
    print(nwbfile.acquisition['test_ec_series'].electrodes.table['positive_electrodes'].data)
```


