Skip to main content

NWB extension for survey/ behavioral data

Project description

ndx-survey-data Extension for NWB

Structure for storing the survey data in a NWB file.

PyPI version codecov License

schema schema

Installation

$ pip install ndx-survey-data

Usage

from pynwb import NWBHDF5IO, NWBFile
from datetime import datetime
from ndx_survey_data.survey_definitions import nrs_survey_table
import numpy as np


nrs_survey_table.add_row(
    pain_intensity_rating=1.1,
    pain_relief_rating=5.5,
    relative_pain_intensity_rating=np.nan,
    pain_unpleasantness=np.nan,
    unix_timestamp=1588217283
)

nrs_survey_table.add_row(
    pain_intensity_rating=np.nan,
    pain_relief_rating=1,
    relative_pain_intensity_rating=6,
    pain_unpleasantness=2.7,
    unix_timestamp=1588217283
)

nrs_survey_table.add_row(
    pain_intensity_rating=5.3,
    pain_relief_rating=np.nan,
    relative_pain_intensity_rating=0.8,
    pain_unpleasantness=2.1,
    unix_timestamp=1588217283
)

nrs_survey_table.add_row(
    pain_intensity_rating=3.7,
    pain_relief_rating=np.nan,
    relative_pain_intensity_rating=6,
    pain_unpleasantness=np.nan,
    unix_timestamp=1588217283
)
nwbfile = NWBFile('description', 'id', datetime.now().astimezone())

nwbfile.create_processing_module(name='behavior', description='survey/behavioral data')

nwbfile.processing['behavior'].add(nrs_survey_table)

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.processing['behavior'].data_interfaces['nrs_survey_table'].to_dataframe().to_html())
pain_intensity_rating pain_relief_rating relative_pain_intensity_rating pain_unpleasantness unix_timestamp
id
0 1.1 5.5 NaN NaN 1588217283
1 NaN 1.0 6.0 2.7 1588217283
2 5.3 NaN 0.8 2.1 1588217283
3 3.7 NaN 6.0 NaN 1588217283

To add a custom survey:

from ndx_survey_data import QuestionResponse, SurveyTable

q1 = QuestionResponse(name='question1',
                      description='desc',
                      options=['option 1', 'option 2', 'option 3'])

q2 = QuestionResponse(name='question2', 
                      description='desc',
                      options=['option 1', 'option 2', 'option 3'])

q3 = QuestionResponse(name='question3', 
                      description='desc',
                      options=['option 1', 'option 2', 'option 3'])


custom_survey_table = SurveyTable(name='custom_survey_table',
                               description='desc', 
                               columns=[q1, q2, q3])

custom_survey_table.add_row(question1=1.3, question2=3.9, question3=0.2, unix_timestamp=1588217283)
custom_survey_table.add_row(question1=3.3, question2=1.4, question3=0.6, unix_timestamp=1588217283)
custom_survey_table.add_row(question1=2.5, question2=2.1, question3=2.8, unix_timestamp=1588217283)

Project details


Download files

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

Files for ndx-survey-data, version 0.2.0
Filename, size File type Python version Upload date Hashes
Filename, size ndx_survey_data-0.2.0-py2.py3-none-any.whl (7.6 kB) File type Wheel Python version py2.py3 Upload date Hashes View
Filename, size ndx-survey-data-0.2.0.tar.gz (14.7 kB) File type Source Python version None Upload date Hashes View

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring DigiCert DigiCert EV certificate Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page