You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

182 lines
10 KiB

  1. # from nd2reader.parser import Nd2Parser
  2. # import unittest
  3. #
  4. #
  5. # class MockNd2Parser(object):
  6. # def __init__(self, channels, fields_of_view, z_levels):
  7. # self.channels = channels
  8. # self.fields_of_view = fields_of_view
  9. # self.z_levels = z_levels
  10. #
  11. #
  12. # class TestNd2Parser(unittest.TestCase):
  13. # def test_calculate_field_of_view_simple(self):
  14. # """ With a single field of view, the field of view should always be the same number (0). """
  15. # nd2 = MockNd2Parser([''], [0], [0])
  16. # for frame_number in range(1000):
  17. # result = Nd2Parser._calculate_field_of_view(nd2, frame_number)
  18. # self.assertEqual(result, 0)
  19. #
  20. # def test_calculate_field_of_view_two_channels(self):
  21. # nd2 = MockNd2Parser(['', 'GFP'], [0], [0])
  22. # for frame_number in range(1000):
  23. # result = Nd2Parser._calculate_field_of_view(nd2, frame_number)
  24. # self.assertEqual(result, 0)
  25. #
  26. # def test_calculate_field_of_view_three_channels(self):
  27. # nd2 = MockNd2Parser(['', 'GFP', 'dsRed'], [0], [0])
  28. # for frame_number in range(1000):
  29. # result = Nd2Parser._calculate_field_of_view(nd2, frame_number)
  30. # self.assertEqual(result, 0)
  31. #
  32. # def test_calculate_field_of_view_two_fovs(self):
  33. # nd2 = MockNd2Parser([''], [0, 1], [0])
  34. # for frame_number in range(1000):
  35. # result = Nd2Parser._calculate_field_of_view(nd2, frame_number)
  36. # self.assertEqual(result, frame_number % 2)
  37. #
  38. # def test_calculate_field_of_view_two_fovs_two_zlevels(self):
  39. # nd2 = MockNd2Parser([''], [0, 1], [0, 1])
  40. # self.assertEqual(Nd2Parser._calculate_field_of_view(nd2, 0), 0)
  41. # self.assertEqual(Nd2Parser._calculate_field_of_view(nd2, 1), 0)
  42. # self.assertEqual(Nd2Parser._calculate_field_of_view(nd2, 2), 1)
  43. # self.assertEqual(Nd2Parser._calculate_field_of_view(nd2, 3), 1)
  44. # self.assertEqual(Nd2Parser._calculate_field_of_view(nd2, 4), 0)
  45. # self.assertEqual(Nd2Parser._calculate_field_of_view(nd2, 5), 0)
  46. # self.assertEqual(Nd2Parser._calculate_field_of_view(nd2, 6), 1)
  47. # self.assertEqual(Nd2Parser._calculate_field_of_view(nd2, 7), 1)
  48. #
  49. # def test_calculate_field_of_view_two_everything(self):
  50. # nd2 = MockNd2Parser(['', 'GFP'], [0, 1], [0, 1])
  51. # self.assertEqual(Nd2Parser._calculate_field_of_view(nd2, 0), 0)
  52. # self.assertEqual(Nd2Parser._calculate_field_of_view(nd2, 1), 0)
  53. # self.assertEqual(Nd2Parser._calculate_field_of_view(nd2, 2), 0)
  54. # self.assertEqual(Nd2Parser._calculate_field_of_view(nd2, 3), 0)
  55. # self.assertEqual(Nd2Parser._calculate_field_of_view(nd2, 4), 1)
  56. # self.assertEqual(Nd2Parser._calculate_field_of_view(nd2, 5), 1)
  57. # self.assertEqual(Nd2Parser._calculate_field_of_view(nd2, 6), 1)
  58. # self.assertEqual(Nd2Parser._calculate_field_of_view(nd2, 7), 1)
  59. #
  60. # def test_calculate_field_of_view_7c2f2z(self):
  61. # nd2 = MockNd2Parser(['', 'GFP', 'dsRed', 'dTomato', 'lulzBlue', 'jimbotronPurple', 'orange'], [0, 1], [0, 1])
  62. # for i in range(14):
  63. # self.assertEqual(Nd2Parser._calculate_field_of_view(nd2, i), 0)
  64. # for i in range(14, 28):
  65. # self.assertEqual(Nd2Parser._calculate_field_of_view(nd2, i), 1)
  66. # for i in range(28, 42):
  67. # self.assertEqual(Nd2Parser._calculate_field_of_view(nd2, i), 0)
  68. # for i in range(42, 56):
  69. # self.assertEqual(Nd2Parser._calculate_field_of_view(nd2, i), 1)
  70. # for i in range(56, 70):
  71. # self.assertEqual(Nd2Parser._calculate_field_of_view(nd2, i), 0)
  72. # for i in range(70, 84):
  73. # self.assertEqual(Nd2Parser._calculate_field_of_view(nd2, i), 1)
  74. #
  75. # def test_calculate_field_of_view_2c3f5z(self):
  76. # """ All prime numbers to elucidate any errors that won't show up when numbers are multiples of each other """
  77. # nd2 = MockNd2Parser(['', 'GFP'], [0, 1, 2], [0, 1, 2, 3, 4])
  78. # for i in range(10):
  79. # self.assertEqual(Nd2Parser._calculate_field_of_view(nd2, i), 0)
  80. # for i in range(10, 20):
  81. # self.assertEqual(Nd2Parser._calculate_field_of_view(nd2, i), 1)
  82. # for i in range(20, 30):
  83. # self.assertEqual(Nd2Parser._calculate_field_of_view(nd2, i), 2)
  84. # for i in range(30, 40):
  85. # self.assertEqual(Nd2Parser._calculate_field_of_view(nd2, i), 0)
  86. # for i in range(40, 50):
  87. # self.assertEqual(Nd2Parser._calculate_field_of_view(nd2, i), 1)
  88. # for i in range(50, 60):
  89. # self.assertEqual(Nd2Parser._calculate_field_of_view(nd2, i), 2)
  90. #
  91. # def test_calculate_channel_simple(self):
  92. # nd2 = MockNd2Parser(['GFP'], [0], [0])
  93. # for i in range(1000):
  94. # self.assertEqual(Nd2Parser._calculate_channel(nd2, i), 'GFP')
  95. #
  96. # def test_calculate_channel(self):
  97. # nd2 = MockNd2Parser(['', 'GFP', 'dsRed', 'dTomato', 'lulzBlue', 'jimbotronPurple', 'orange'], [0], [0])
  98. # for i in range(1000):
  99. # for n, channel in enumerate(['', 'GFP', 'dsRed', 'dTomato', 'lulzBlue', 'jimbotronPurple', 'orange'], start=i*7):
  100. # self.assertEqual(Nd2Parser._calculate_channel(nd2, n), channel)
  101. #
  102. # def test_calculate_channel_7c2fov1z(self):
  103. # nd2 = MockNd2Parser(['', 'GFP', 'dsRed', 'dTomato', 'lulzBlue', 'jimbotronPurple', 'orange'], [0, 1], [0])
  104. # for i in range(1000):
  105. # for n, channel in enumerate(['', 'GFP', 'dsRed', 'dTomato', 'lulzBlue', 'jimbotronPurple', 'orange'], start=i*7):
  106. # self.assertEqual(Nd2Parser._calculate_channel(nd2, n), channel)
  107. #
  108. # def test_calculate_channel_ludicrous_values(self):
  109. # nd2 = MockNd2Parser(['', 'GFP', 'dsRed', 'dTomato', 'lulzBlue', 'jimbotronPurple', 'orange'], list(range(31)), list(range(17)))
  110. # for i in range(10000):
  111. # for n, channel in enumerate(['', 'GFP', 'dsRed', 'dTomato', 'lulzBlue', 'jimbotronPurple', 'orange'], start=i*7):
  112. # self.assertEqual(Nd2Parser._calculate_channel(nd2, n), channel)
  113. #
  114. # def test_calculate_z_level(self):
  115. # nd2 = MockNd2Parser([''], [0], [0])
  116. # for frame_number in range(1000):
  117. # result = Nd2Parser._calculate_z_level(nd2, frame_number)
  118. # self.assertEqual(result, 0)
  119. #
  120. # def test_calculate_z_level_1c1f2z(self):
  121. # nd2 = MockNd2Parser([''], [0], [0, 1])
  122. # for frame_number in range(1000):
  123. # result = Nd2Parser._calculate_z_level(nd2, frame_number)
  124. # self.assertEqual(result, frame_number % 2)
  125. #
  126. # def test_calculate_z_level_31c17f1z(self):
  127. # nd2 = MockNd2Parser(list(range(31)), list(range(17)), [0])
  128. # for frame_number in range(1000):
  129. # result = Nd2Parser._calculate_z_level(nd2, frame_number)
  130. # self.assertEqual(result, 0)
  131. #
  132. # def test_calculate_z_level_2c1f2z(self):
  133. # nd2 = MockNd2Parser(['', 'GFP'], [0], [0, 1])
  134. # self.assertEqual(Nd2Parser._calculate_z_level(nd2, 0), 0)
  135. # self.assertEqual(Nd2Parser._calculate_z_level(nd2, 1), 0)
  136. # self.assertEqual(Nd2Parser._calculate_z_level(nd2, 2), 1)
  137. # self.assertEqual(Nd2Parser._calculate_z_level(nd2, 3), 1)
  138. # self.assertEqual(Nd2Parser._calculate_z_level(nd2, 4), 0)
  139. # self.assertEqual(Nd2Parser._calculate_z_level(nd2, 5), 0)
  140. # self.assertEqual(Nd2Parser._calculate_z_level(nd2, 6), 1)
  141. # self.assertEqual(Nd2Parser._calculate_z_level(nd2, 7), 1)
  142. # self.assertEqual(Nd2Parser._calculate_z_level(nd2, 8), 0)
  143. # self.assertEqual(Nd2Parser._calculate_z_level(nd2, 9), 0)
  144. # self.assertEqual(Nd2Parser._calculate_z_level(nd2, 10), 1)
  145. # self.assertEqual(Nd2Parser._calculate_z_level(nd2, 11), 1)
  146. # self.assertEqual(Nd2Parser._calculate_z_level(nd2, 12), 0)
  147. # self.assertEqual(Nd2Parser._calculate_z_level(nd2, 13), 0)
  148. # self.assertEqual(Nd2Parser._calculate_z_level(nd2, 14), 1)
  149. # self.assertEqual(Nd2Parser._calculate_z_level(nd2, 15), 1)
  150. #
  151. # def test_calculate_z_level_2c3f5z(self):
  152. # nd2 = MockNd2Parser(['', 'GFP'], [0, 1, 2], [0, 1, 2, 3, 4])
  153. # self.assertEqual(Nd2Parser._calculate_z_level(nd2, 0), 0)
  154. # self.assertEqual(Nd2Parser._calculate_z_level(nd2, 1), 0)
  155. # self.assertEqual(Nd2Parser._calculate_z_level(nd2, 2), 1)
  156. # self.assertEqual(Nd2Parser._calculate_z_level(nd2, 3), 1)
  157. # self.assertEqual(Nd2Parser._calculate_z_level(nd2, 4), 2)
  158. # self.assertEqual(Nd2Parser._calculate_z_level(nd2, 5), 2)
  159. # self.assertEqual(Nd2Parser._calculate_z_level(nd2, 6), 3)
  160. # self.assertEqual(Nd2Parser._calculate_z_level(nd2, 7), 3)
  161. # self.assertEqual(Nd2Parser._calculate_z_level(nd2, 8), 4)
  162. # self.assertEqual(Nd2Parser._calculate_z_level(nd2, 9), 4)
  163. # self.assertEqual(Nd2Parser._calculate_z_level(nd2, 10), 0)
  164. # self.assertEqual(Nd2Parser._calculate_z_level(nd2, 11), 0)
  165. # self.assertEqual(Nd2Parser._calculate_z_level(nd2, 12), 1)
  166. # self.assertEqual(Nd2Parser._calculate_z_level(nd2, 13), 1)
  167. # self.assertEqual(Nd2Parser._calculate_z_level(nd2, 14), 2)
  168. # self.assertEqual(Nd2Parser._calculate_z_level(nd2, 15), 2)
  169. # self.assertEqual(Nd2Parser._calculate_z_level(nd2, 16), 3)
  170. # self.assertEqual(Nd2Parser._calculate_z_level(nd2, 17), 3)
  171. # self.assertEqual(Nd2Parser._calculate_z_level(nd2, 18), 4)
  172. # self.assertEqual(Nd2Parser._calculate_z_level(nd2, 19), 4)
  173. # self.assertEqual(Nd2Parser._calculate_z_level(nd2, 20), 0)
  174. # self.assertEqual(Nd2Parser._calculate_z_level(nd2, 21), 0)
  175. # self.assertEqual(Nd2Parser._calculate_z_level(nd2, 22), 1)
  176. # self.assertEqual(Nd2Parser._calculate_z_level(nd2, 23), 1)
  177. # self.assertEqual(Nd2Parser._calculate_z_level(nd2, 24), 2)
  178. # self.assertEqual(Nd2Parser._calculate_z_level(nd2, 25), 2)
  179. # self.assertEqual(Nd2Parser._calculate_z_level(nd2, 26), 3)
  180. # self.assertEqual(Nd2Parser._calculate_z_level(nd2, 27), 3)
  181. # self.assertEqual(Nd2Parser._calculate_z_level(nd2, 28), 4)
  182. # self.assertEqual(Nd2Parser._calculate_z_level(nd2, 29), 4)
  183. # self.assertEqual(Nd2Parser._calculate_z_level(nd2, 30), 0)