test_openephysrawio.py 3.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. # -*- coding: utf-8 -*-
  2. # needed for python 3 compatibility
  3. from __future__ import unicode_literals, print_function, division, absolute_import
  4. import unittest
  5. from neo.rawio.openephysrawio import OpenEphysRawIO
  6. from neo.rawio.tests.common_rawio_test import BaseTestRawIO
  7. class TestOpenEphysRawIO(BaseTestRawIO, unittest.TestCase, ):
  8. rawioclass = OpenEphysRawIO
  9. entities_to_test = ['OpenEphys_SampleData_1',
  10. # 'OpenEphys_SampleData_2_(multiple_starts)', # This not implemented this raise error
  11. # 'OpenEphys_SampleData_3',
  12. ]
  13. files_to_download = [
  14. # One segment
  15. 'OpenEphys_SampleData_1/101_CH0.continuous',
  16. 'OpenEphys_SampleData_1/101_CH1.continuous',
  17. 'OpenEphys_SampleData_1/all_channels.events',
  18. 'OpenEphys_SampleData_1/Continuous_Data.openephys',
  19. 'OpenEphys_SampleData_1/messages.events',
  20. 'OpenEphys_SampleData_1/settings.xml',
  21. 'OpenEphys_SampleData_1/STp106.0n0.spikes',
  22. # Multi segment with multi file
  23. # NOT implemented for now in the IO
  24. # Raise Error
  25. 'OpenEphys_SampleData_2_(multiple_starts)/101_CH0_2.continuous',
  26. 'OpenEphys_SampleData_2_(multiple_starts)/101_CH1_2.continuous',
  27. 'OpenEphys_SampleData_2_(multiple_starts)/all_channels_2.events',
  28. 'OpenEphys_SampleData_2_(multiple_starts)/Continuous_Data_2.openephys',
  29. 'OpenEphys_SampleData_2_(multiple_starts)/messages_2.events',
  30. 'OpenEphys_SampleData_2_(multiple_starts)/settings_2.xml',
  31. 'OpenEphys_SampleData_2_(multiple_starts)/STp106.0n0_2.spikes',
  32. 'OpenEphys_SampleData_2_(multiple_starts)/101_CH0.continuous',
  33. 'OpenEphys_SampleData_2_(multiple_starts)/101_CH1.continuous',
  34. 'OpenEphys_SampleData_2_(multiple_starts)/all_channels.events',
  35. 'OpenEphys_SampleData_2_(multiple_starts)/Continuous_Data.openephys',
  36. 'OpenEphys_SampleData_2_(multiple_starts)/messages.events',
  37. 'OpenEphys_SampleData_2_(multiple_starts)/settings.xml',
  38. 'OpenEphys_SampleData_2_(multiple_starts)/STp106.0n0.spikes',
  39. # Multi segment with corrupted file (CH32) : implemenetd
  40. 'OpenEphys_SampleData_3/100_CH1_2.continuous',
  41. 'OpenEphys_SampleData_3/100_CH2_2.continuous',
  42. 'OpenEphys_SampleData_3/100_CH32_2.continuous',
  43. 'OpenEphys_SampleData_3/100_CH32.continuous',
  44. 'OpenEphys_SampleData_3/all_channels_2.events',
  45. 'OpenEphys_SampleData_3/Continuous_Data_2.openephys',
  46. 'OpenEphys_SampleData_3/messages_2.events',
  47. 'OpenEphys_SampleData_3/settings_2.xml',
  48. 'OpenEphys_SampleData_3/100_CH1.continuous',
  49. 'OpenEphys_SampleData_3/100_CH2.continuous',
  50. 'OpenEphys_SampleData_3/100_CH3_2.continuous',
  51. 'OpenEphys_SampleData_3/100_CH3.continuous',
  52. 'OpenEphys_SampleData_3/all_channels.events',
  53. 'OpenEphys_SampleData_3/Continuous_Data.openephys',
  54. 'OpenEphys_SampleData_3/messages.events',
  55. 'OpenEphys_SampleData_3/settings.xml',
  56. ]
  57. def test_raise_error_if_discontinuous_files(self):
  58. # the case of discontinuous signals is NOT cover by the IO for the moment
  59. # It must raise an error
  60. reader = OpenEphysRawIO(dirname=self.get_filename_path(
  61. 'OpenEphys_SampleData_2_(multiple_starts)'))
  62. with self.assertRaises(Exception):
  63. reader.parse_header()
  64. def test_raise_error_if_strange_timestamps(self):
  65. # In this dataset CH32 have strange timestamps
  66. reader = OpenEphysRawIO(dirname=self.get_filename_path('OpenEphys_SampleData_3'))
  67. with self.assertRaises(Exception):
  68. reader.parse_header()
  69. if __name__ == "__main__":
  70. unittest.main()