12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- import sys
- from os.path import join, realpath, dirname
- sys.path.insert(0, join(dirname(realpath(__file__)), '..'))
- print(sys.path)
- import load_local_neo_odml_elephant
- import unittest
- import reachgraspio.reachgraspio as rg
- class RGIOTestCase(unittest.TestCase):
- def setUp(self):
- rio = rg.ReachGraspIO("../../datasets/i140703-001", odml_directory="../../datasets",
- nsx_to_load='all')
- self.block = rio.read_block(lazy=True)
- def test_group_units_present(self):
- unit_groups = [g for g in self.block.groups if 'Unit' in g.name]
- self.assertGreater(len(unit_groups), 0)
- self.assertGreaterEqual(len(unit_groups), len(self.block.segments[0].spiketrains))
- def test_channel_infos_present(self):
- for seg in self.block.segments:
- for anasig in seg.analogsignals:
- if anasig.annotations['neural_signal']:
- self.assertIn('connector_aligned_ids', anasig.array_annotations)
- self.assertIn('coordinates_x', anasig.array_annotations)
- self.assertIn('coordinates_y', anasig.array_annotations)
- def test_group_unit_annotations(self):
- for group in self.block.groups:
- if 'Unit' in group.name:
- self.assertIn('unit_id', group.annotations)
- self.assertIn('connector_aligned_id', group.annotations)
- self.assertIn('sua', group.annotations)
- self.assertIn('mua', group.annotations)
- self.assertIn('noise', group.annotations)
- # To be investigated
- # if group.annotations['unit_id'] > 0:
- # print(group.annotations)
- # self.assertIn('spike_duration', group.annotations)
- # self.assertIn('spike_amplitude', group.annotations)
- # self.assertIn('spike_count', group.annotations)
- def test_group_unit_linking(self):
- for group in self.block.groups:
- if 'Unit' in group.name:
- asig_annotations = group.channelviews[0].obj.array_annotations
- idx = group.channelviews[0].index
- self.assertEqual(group.annotations['channel_id'],
- asig_annotations['channel_ids'][idx])
- def test_rejection_annotations_present(self):
- for seg in self.block.segments:
- for anasig in seg.analogsignals:
- if anasig.annotations['neural_signal']:
- for key in ['file_origin', 'connector_ID', 'connector_pinID', 'nev_dig_factor',
- 'nb_sorted_units', 'nev_hi_freq_order', 'nev_hi_freq_type',
- 'nev_lo_freq_order', 'nev_lo_freq_type', 'nsx_hi_freq_order',
- 'nsx_lo_freq_order', 'nsx_hi_freq_type', 'nsx_lo_freq_type',
- 'description', 'nsx', 'electrode_reject_IFC',
- 'electrode_reject_LFC', 'electrode_reject_HFC']:
- self.assertIn(key, anasig.array_annotations)
- def test_event_annotations(self):
- for seg in self.block.segments:
- for ev in seg.events:
- if ev.name in ['DigitalTrialEvents', 'AnalogTrialEvents', 'TrialEvents']:
- for key in ['trial_event_labels', 'trial_timestamp_id', 'trial_id',
- 'belongs_to_trialtype', 'performance_in_trial',
- 'performance_in_trial_str', 'trial_reject_HFC', 'trial_reject_LFC',
- 'trial_reject_IFC']:
- self.assertIn(key, ev.array_annotations)
- ev_names = [ev.name for ev in seg.events]
- for key in ['AnalogTrialEvents', 'DigitalTrialEvents', 'TrialEvents']:
- self.assertIn(key, ev_names)
- def test_block_annotation(self):
- self.assertIn('conditions', self.block.annotations)
- self.assertGreater(len(self.block.annotations['conditions']), 0)
- def suite():
- suite = unittest.makeSuite(RGIOTestCase, 'test')
- return suite
- if __name__ == "__main__":
- runner = unittest.TextTestRunner(verbosity=2)
- runner.run(suite())
|