NWB:N扩展,用于存储Tank实验室的元数据
项目描述
ndx-tank-metadata
NWB LabMetaData扩展,用于Tank实验室。
安装
$ pip install ndx-tank-metadata
用法
此扩展旨在扩展LabMetaData架构以包含用于Virmen元数据转换的定制字段。此扩展已集成到Tank实验室转换管道(tank-lab-to-nwb)中,无需单独安装。或者,它可以像下面演示的那样从Python脚本中使用。
import os
from pynwb import NWBFile, NWBHDF5IO
from datetime import datetime
from ndx_tank_metadata import LabMetaDataExtension, RigExtension, MazeExtension
nwbfile = NWBFile('description', 'id', datetime.now().astimezone())
# Add rig information
rig = {'name': 'rig',
'rig': 'VRTrain6',
'simulationMode': 0,
'hasDAQ': 1,
'hasSyncComm': 0,
'minIterationDT': 0.01,
'arduinoPort': 'COM5',
'sensorDotsPerRev': [1967.6, 1967.6, 1967.6, 1967.6],
'ballCircumference': 63.8,
'toroidXFormP1': 0.5193,
'toroidXFormP2': 0.5171,
'colorAdjustment': [0., 0.4, 0.5],
'soundAdjustment': 0.2,
'nidaqDevice': 1,
'nidaqPort': 1,
'nidaqLines': [0, 11],
'syncClockChannel': 5,
'syncDataChannel': 6,
'rewardChannel': 0,
'rewardSize': 0.004,
'rewardDuration': 0.05,
'laserChannel': 1,
'rightPuffChannel': 2,
'leftPuffChannel': 3,
'webcam_name': 'Live! Cam Sync HD VF0770'}
rig_extension = RigExtension(**rig)
# Create mazes table
maze_extension = MazeExtension(name='mazes',
description='description of the mazes')
maze_dict = {'world': 1,
'lStart': '5',
'lCue': '45',
'lMemory': '10',
'cueDuration': 'NaN',
'cueVisibleAt': 'Inf',
'cueProbability': 'Inf',
'cueDensityPerM': '3',
'nCueSlots': '3',
'tri_turnHint': 1,
'color': [],
'turnHint_Mem': 0,
'numTrials': 10,
'numTrialsPerMin': 2,
'criteriaNTrials': 1,
'warmupNTrials': [],
'numSessions': 0,
'performance': 0,
'maxBias': 1,
'warmupMaze': [],
'warmupPerform': [],
'warmupBias': [],
'warmupMotor': [],
'easyBlock': 0,
'easyBlockNTrials': 10,
'numBlockTrials': 20,
'blockPerform': 0.7}
# Add each maze to extension
maze_extension.add_row(**maze_dict)
# Create LabMetaData container
lab_metadata_dict = dict(
name='LabMetaData',
experiment_name='test',
world_file_name='test',
protocol_name='test',
stimulus_bank_path='test',
commit_id='test',
location='test',
num_trials=245,
session_end_time=datetime.utcnow().isoformat(),
rig=rig_extension,
mazes=maze_extension
)
# Populate metadata extension
lab_metadata = LabMetaDataExtension(**lab_metadata_dict)
# Add to file
nwbfile.add_lab_meta_data(lab_metadata)
filename = 'test_labmetadata.nwb'
with NWBHDF5IO(filename, 'w') as io:
io.write(nwbfile)