tonic 1.5.1.dev13__tar.gz → 1.5.1.dev18__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (178) hide show
  1. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/AUTHORS +2 -0
  2. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/ChangeLog +3 -0
  3. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/PKG-INFO +1 -1
  4. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/docs/datasets.rst +1 -0
  5. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/test/test_datasets.py +62 -0
  6. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/tonic/datasets/__init__.py +1 -0
  7. tonic-1.5.1.dev18/tonic/datasets/ntidigits18.py +145 -0
  8. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/tonic/functional/event_downsampling.py +3 -3
  9. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/tonic.egg-info/PKG-INFO +1 -1
  10. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/tonic.egg-info/SOURCES.txt +1 -0
  11. tonic-1.5.1.dev18/tonic.egg-info/pbr.json +1 -0
  12. tonic-1.5.1.dev13/tonic.egg-info/pbr.json +0 -1
  13. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/.binder/requirements.txt +0 -0
  14. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/.coveragerc +0 -0
  15. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/.github/workflows/ci-pipeline.yml +0 -0
  16. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/.pre-commit-config.yaml +0 -0
  17. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/.readthedocs.yml +0 -0
  18. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/LICENSE.txt +0 -0
  19. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/MANIFEST.in +0 -0
  20. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/README.md +0 -0
  21. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/docs/Makefile +0 -0
  22. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/docs/_static/event-cameras/eventstream.png +0 -0
  23. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/docs/_static/event-cameras/framestream.png +0 -0
  24. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/docs/_static/event-cameras/receptive-fields.png +0 -0
  25. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/docs/_static/event-cameras/sampling-theorems.png +0 -0
  26. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/docs/_static/snn/neuron-models.png +0 -0
  27. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/docs/_static/snn/surrogates.png +0 -0
  28. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/docs/_static/tonic-logo-black-bg.png +0 -0
  29. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/docs/_static/tonic-logo-black.png +0 -0
  30. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/docs/_static/tonic-logo-white.png +0 -0
  31. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/docs/_static/tonic_favicon.png +0 -0
  32. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/docs/_templates/class_dataset.rst +0 -0
  33. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/docs/_templates/class_transform.rst +0 -0
  34. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/docs/about/about.rst +0 -0
  35. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/docs/about/info.rst +0 -0
  36. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/docs/about/prototype.rst +0 -0
  37. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/docs/about/release_notes.rst +0 -0
  38. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/docs/conf.py +0 -0
  39. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/docs/gallery/README.rst +0 -0
  40. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/docs/gallery/representations/README.rst +0 -0
  41. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/docs/gallery/representations/plot_tobinarep.py +0 -0
  42. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/docs/gallery/representations/plot_toframe.py +0 -0
  43. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/docs/gallery/representations/plot_toimage.py +0 -0
  44. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/docs/gallery/representations/plot_totimesurface.py +0 -0
  45. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/docs/gallery/representations/plot_tovoxelgrid.py +0 -0
  46. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/docs/gallery/transformations/README.rst +0 -0
  47. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/docs/gallery/transformations/plot_centercrop.py +0 -0
  48. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/docs/gallery/transformations/plot_crop_time.py +0 -0
  49. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/docs/gallery/transformations/plot_decimation.py +0 -0
  50. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/docs/gallery/transformations/plot_denoise.py +0 -0
  51. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/docs/gallery/transformations/plot_downsample.py +0 -0
  52. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/docs/gallery/transformations/plot_drop_event.py +0 -0
  53. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/docs/gallery/transformations/plot_drop_event_by_area.py +0 -0
  54. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/docs/gallery/transformations/plot_drop_event_by_time.py +0 -0
  55. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/docs/gallery/transformations/plot_drop_pixel.py +0 -0
  56. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/docs/gallery/transformations/plot_event_downsampling.py +0 -0
  57. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/docs/gallery/transformations/plot_merge_polarities.py +0 -0
  58. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/docs/gallery/transformations/plot_random_crop.py +0 -0
  59. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/docs/gallery/transformations/plot_random_flip_lr.py +0 -0
  60. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/docs/gallery/transformations/plot_random_flip_ud.py +0 -0
  61. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/docs/gallery/transformations/plot_random_time_reversal.py +0 -0
  62. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/docs/gallery/transformations/plot_refractory_period.py +0 -0
  63. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/docs/gallery/transformations/plot_spatial_jitter.py +0 -0
  64. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/docs/gallery/transformations/plot_time_jitter.py +0 -0
  65. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/docs/gallery/transformations/plot_uniform_noise.py +0 -0
  66. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/docs/getting_involved/communication_channels.rst +0 -0
  67. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/docs/getting_involved/contribute.rst +0 -0
  68. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/docs/getting_involved/getting_involved.rst +0 -0
  69. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/docs/getting_started/getting_started.rst +0 -0
  70. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/docs/getting_started/install.rst +0 -0
  71. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/docs/getting_started/nmnist.ipynb +0 -0
  72. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/docs/how-tos/how-tos.rst +0 -0
  73. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/docs/how-tos/loading-raw-events.ipynb +0 -0
  74. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/docs/how-tos/visualizing-data.ipynb +0 -0
  75. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/docs/how-tos/wrapping_own_data.ipynb +0 -0
  76. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/docs/index.md +0 -0
  77. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/docs/make.bat +0 -0
  78. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/docs/reading_material/design_choices.rst +0 -0
  79. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/docs/reading_material/intro-event-cameras.rst +0 -0
  80. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/docs/reading_material/intro-snns.rst +0 -0
  81. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/docs/reading_material/reading_material.rst +0 -0
  82. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/docs/reading_material/training-snns.rst +0 -0
  83. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/docs/requirements.txt +0 -0
  84. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/docs/transformations.rst +0 -0
  85. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/docs/tutorials/Aug_DiskCachDataset.ipynb +0 -0
  86. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/docs/tutorials/audio_transforms_tutorial.ipynb +0 -0
  87. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/docs/tutorials/batching.ipynb +0 -0
  88. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/docs/tutorials/davis_data.ipynb +0 -0
  89. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/docs/tutorials/fast_dataloading.ipynb +0 -0
  90. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/docs/tutorials/large_datasets.ipynb +0 -0
  91. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/docs/tutorials/slicing.ipynb +0 -0
  92. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/docs/tutorials/tutorials.rst +0 -0
  93. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/requirements.txt +0 -0
  94. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/setup.cfg +0 -0
  95. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/setup.py +0 -0
  96. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/test/dataset_utils.py +0 -0
  97. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/test/prototype_dataset_utils.py +0 -0
  98. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/test/requirements.txt +0 -0
  99. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/test/test_audio_augmentations.py +0 -0
  100. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/test/test_audio_transforms.py +0 -0
  101. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/test/test_aug_caching.py +0 -0
  102. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/test/test_caching.py +0 -0
  103. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/test/test_chained_transforms.py +0 -0
  104. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/test/test_data/sample.aedat4 +0 -0
  105. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/test/test_data/sample_aedat_header.aedat +0 -0
  106. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/test/test_data/sample_ncars.dat +0 -0
  107. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/test/test_data/sample_nmnist.bin +0 -0
  108. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/test/test_data/sample_stmnist.mat +0 -0
  109. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/test/test_dsec.py +0 -0
  110. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/test/test_io.py +0 -0
  111. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/test/test_prototype_datasets.py +0 -0
  112. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/test/test_representations.py +0 -0
  113. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/test/test_sliced_dataset.py +0 -0
  114. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/test/test_slicers.py +0 -0
  115. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/test/test_tonic_utils.py +0 -0
  116. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/test/test_transforms.py +0 -0
  117. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/test/torch_requirements.txt +0 -0
  118. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/test/utils.py +0 -0
  119. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/tonic/__init__.py +0 -0
  120. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/tonic/audio_augmentations.py +0 -0
  121. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/tonic/audio_transforms.py +0 -0
  122. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/tonic/cached_dataset.py +0 -0
  123. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/tonic/collation.py +0 -0
  124. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/tonic/dataset.py +0 -0
  125. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/tonic/datasets/asl_dvs.py +0 -0
  126. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/tonic/datasets/cifar10dvs.py +0 -0
  127. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/tonic/datasets/davisdataset.py +0 -0
  128. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/tonic/datasets/dsec.py +0 -0
  129. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/tonic/datasets/dvs_lips.py +0 -0
  130. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/tonic/datasets/dvsgesture.py +0 -0
  131. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/tonic/datasets/ebssa.py +0 -0
  132. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/tonic/datasets/hsd.py +0 -0
  133. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/tonic/datasets/mvsec.py +0 -0
  134. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/tonic/datasets/ncaltech101.py +0 -0
  135. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/tonic/datasets/nmnist.py +0 -0
  136. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/tonic/datasets/pokerdvs.py +0 -0
  137. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/tonic/datasets/s_mnist.py +0 -0
  138. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/tonic/datasets/threeET_eyetracking.py +0 -0
  139. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/tonic/datasets/tum_vie.py +0 -0
  140. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/tonic/datasets/visual_place_recognition.py +0 -0
  141. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/tonic/download_utils.py +0 -0
  142. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/tonic/functional/__init__.py +0 -0
  143. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/tonic/functional/crop.py +0 -0
  144. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/tonic/functional/decimate.py +0 -0
  145. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/tonic/functional/denoise.py +0 -0
  146. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/tonic/functional/drop_event.py +0 -0
  147. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/tonic/functional/drop_pixel.py +0 -0
  148. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/tonic/functional/refractory_period.py +0 -0
  149. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/tonic/functional/spatial_jitter.py +0 -0
  150. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/tonic/functional/time_jitter.py +0 -0
  151. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/tonic/functional/time_skew.py +0 -0
  152. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/tonic/functional/to_averaged_timesurface.py +0 -0
  153. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/tonic/functional/to_bina_rep.py +0 -0
  154. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/tonic/functional/to_frame.py +0 -0
  155. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/tonic/functional/to_timesurface.py +0 -0
  156. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/tonic/functional/to_voxel_grid.py +0 -0
  157. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/tonic/functional/uniform_noise.py +0 -0
  158. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/tonic/io.py +0 -0
  159. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/tonic/prototype/README.md +0 -0
  160. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/tonic/prototype/__init__.py +0 -0
  161. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/tonic/prototype/datasets/__init__.py +0 -0
  162. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/tonic/prototype/datasets/ncars.py +0 -0
  163. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/tonic/prototype/datasets/nmnist.py +0 -0
  164. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/tonic/prototype/datasets/prophesee.py +0 -0
  165. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/tonic/prototype/datasets/stmnist.py +0 -0
  166. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/tonic/prototype/datasets/utils/__init__.py +0 -0
  167. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/tonic/prototype/datasets/utils/_dataset.py +0 -0
  168. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/tonic/prototype/datasets/utils/_utils.py +0 -0
  169. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/tonic/prototype/slicers.py +0 -0
  170. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/tonic/sliced_dataset.py +0 -0
  171. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/tonic/slicers.py +0 -0
  172. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/tonic/transforms.py +0 -0
  173. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/tonic/utils.py +0 -0
  174. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/tonic-logo-padded.png +0 -0
  175. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/tonic.egg-info/dependency_links.txt +0 -0
  176. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/tonic.egg-info/not-zip-safe +0 -0
  177. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/tonic.egg-info/requires.txt +0 -0
  178. {tonic-1.5.1.dev13 → tonic-1.5.1.dev18}/tonic.egg-info/top_level.txt +0 -0
@@ -1,3 +1,4 @@
1
+ Andreu Girbau <andreu.girbau@gmail.com>
1
2
  Anindya Ghosh <anindya128@yahoo.com>
2
3
  Antoine Grimaldi <antoine.grimaldi@univ-amu.fr>
3
4
  AntoineGrimaldi <antoine.grimaldi@univ-amu.fr>
@@ -29,6 +30,7 @@ Sadique Sheik <sadique.sheik@aictx.ai>
29
30
  Sadique Sheik <sadique.sheik@synsense.ai>
30
31
  Sadique Sheik <sheiksadique@gmail.com>
31
32
  Sami Barchid <sami.barchid@univ-lille.fr>
33
+ Simon Narduzzi <simon.narduzzi@csem.ch>
32
34
  Simon Narduzzi <simon.narduzzi@gmail.com>
33
35
  Thomas Nowotny <t.nowotny@sussex.ac.uk>
34
36
  Tobias Fischer <info@tobiasfischer.info>
@@ -1,6 +1,9 @@
1
1
  CHANGES
2
2
  =======
3
3
 
4
+ * Revert bugfix
5
+ * Added documentation for NTIDIGITS18
6
+ * Added support for NTIDIGITS18 Dataset
4
7
  * updated pytorch versions
5
8
  * reverted pre-commit file
6
9
  * reverted pre-commit file
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: tonic
3
- Version: 1.5.1.dev13
3
+ Version: 1.5.1.dev18
4
4
  Summary: Neuromorphic datasets and transformations.
5
5
  Home-page: UNKNOWN
6
6
  Author: The Neuromorphs of Telluride
@@ -32,6 +32,7 @@ Audio event stream classification
32
32
 
33
33
  SHD
34
34
  SSC
35
+ NTIDIGITS18
35
36
 
36
37
  Pose estimation, visual odometry, SLAM
37
38
  --------------------------------------
@@ -181,6 +181,68 @@ class NMNISTTestCaseTest(dataset_utils.DatasetTestCase):
181
181
  return {"n_samples": 1}
182
182
 
183
183
 
184
+ def create_ntidigits_data(filename, n_samples):
185
+ with h5py.File(filename, mode="w") as write_file:
186
+ # Generate random times and units
187
+ times = np.random.random(size=(n_samples, 100)).astype(np.float16)
188
+ units = np.random.randint(0, 64, size=times.shape, dtype=np.uint16)
189
+
190
+ # Generate random sequences of symbols
191
+ symbols = ["o", "1", "2", "3", "4", "5", "6", "7", "8", "9", "z"]
192
+ sequences = np.array([
193
+ "speaker-a-" + "".join(np.random.choice(symbols, size=np.random.randint(1, 7), replace=True))
194
+ for _ in range(n_samples)
195
+ ]).astype("|S18")
196
+
197
+ for partition in ["train", "test"]:
198
+ # Create a dictionary to store the addresses and timestamps of each speaker
199
+ addresses = {}
200
+ timestamps = {}
201
+ for i in range(n_samples):
202
+ speaker = sequences[i]
203
+ if speaker not in addresses:
204
+ addresses[speaker] = units[i]
205
+ timestamps[speaker] = times[i]
206
+
207
+ # Create a group for addresses and timestamps, Store each speaker's data as a dataset in the group
208
+ train_address_group = write_file.create_group("{}_addresses".format(partition))
209
+ for speaker, addresses in addresses.items():
210
+ train_address_group.create_dataset(speaker, data=np.array(addresses, dtype=np.uint16))
211
+
212
+ train_timestamps_group = write_file.create_group("{}_timestamps".format(partition))
213
+ for speaker, timestamps in timestamps.items():
214
+ train_timestamps_group.create_dataset(speaker, data=np.array(timestamps, dtype=np.float16))
215
+
216
+ # Create datasets for labels
217
+ write_file.create_dataset("{}_labels".format(partition), data=sequences)
218
+
219
+
220
+ class NTIDIGITS18TestCaseTrain(dataset_utils.DatasetTestCase):
221
+ DATASET_CLASS = datasets.NTIDIGITS18
222
+ FEATURE_TYPES = (datasets.NTIDIGITS18.dtype,)
223
+ TARGET_TYPES = (int,)
224
+ KWARGS = {"train": True}
225
+
226
+ def inject_fake_data(self, tmpdir):
227
+ testfolder = os.path.join(tmpdir, "NTIDIGITS18/")
228
+ os.makedirs(testfolder, exist_ok=True)
229
+ create_ntidigits_data(testfolder + "n-tidigits.hdf5", n_samples=2)
230
+ return {"n_samples": 2}
231
+
232
+
233
+ class NTIDIGITS18TestCaseTest(dataset_utils.DatasetTestCase):
234
+ DATASET_CLASS = datasets.NTIDIGITS18
235
+ FEATURE_TYPES = (datasets.NTIDIGITS18.dtype,)
236
+ TARGET_TYPES = (int,)
237
+ KWARGS = {"train": False}
238
+
239
+ def inject_fake_data(self, tmpdir):
240
+ testfolder = os.path.join(tmpdir, "NTIDIGITS18/")
241
+ os.makedirs(testfolder, exist_ok=True)
242
+ create_ntidigits_data(testfolder + "n-tidigits.hdf5", n_samples=2)
243
+ return {"n_samples": 2}
244
+
245
+
184
246
  def create_hsd_data(filename, n_samples):
185
247
  with h5py.File(filename, mode="w") as write_file:
186
248
  times = np.random.random(size=(n_samples, 100)).astype(np.float16)
@@ -5,6 +5,7 @@ from .dsec import DSEC
5
5
  from .dvs_lips import DVSLip
6
6
  from .dvsgesture import DVSGesture
7
7
  from .ebssa import EBSSA
8
+ from .ntidigits18 import NTIDIGITS18
8
9
  from .hsd import SHD, SSC
9
10
  from .mvsec import MVSEC
10
11
  from .ncaltech101 import NCALTECH101
@@ -0,0 +1,145 @@
1
+ #!/user/bin/env python
2
+
3
+ import numpy as np
4
+ import h5py
5
+ import os
6
+ from typing import Callable, Optional
7
+
8
+ from tonic.dataset import Dataset
9
+ from tonic.io import make_structured_array
10
+ import requests
11
+ from tqdm import tqdm
12
+
13
+ class NTIDIGITS18(Dataset):
14
+ """`N-TIDIGITS18 Dataset <https://docs.google.com/document/d/1Uxe7GsKKXcy6SlDUX4hoJVAC0-UkH-8kr5UXp0Ndi1M/edit?tab=t.0#heading=h.sbnu5gtazqjq/>`_
15
+ Cochlea Spike Dataset.
16
+ ::
17
+
18
+ @article{anumula2018feature,
19
+ title={Feature representations for neuromorphic audio spike streams},
20
+ author={Anumula, Jithendar and Neil, Daniel and Delbruck, Tobi and Liu, Shih-Chii},
21
+ journal={Frontiers in neuroscience},
22
+ volume={12},
23
+ pages={23},
24
+ year={2018},
25
+ publisher={Frontiers Media SA}
26
+ }
27
+
28
+ Parameters:
29
+ save_to (string): Location to save files to on disk. Will put files in an 'hsd' subfolder.
30
+ train (bool): If True, uses training subset, otherwise testing subset.
31
+ single_digits (bool): If True, only returns samples with single digits (o, 1, 2, 3, 4, 5, 6, 7, 8, 9, z), with class 0 for 'o' and 11 for 'z'.
32
+ transform (callable, optional): A callable of transforms to apply to the data.
33
+ target_transform (callable, optional): A callable of transforms to apply to the targets/labels.
34
+
35
+ Returns:
36
+ A dataset object that can be indexed or iterated over. One sample returns a tuple of (events, targets).
37
+ """
38
+
39
+ base_url = "https://www.dropbox.com/scl/fi/1x4lxt9yyw25sc3tez8oi/n-tidigits.hdf5?e=2&rlkey=w8gi5udvib2zqzosusa5tr3wq&dl=1"
40
+ filename = "n-tidigits.hdf5"
41
+ file_md5 = "360a2d11e5429555c9197381cf6b58e0"
42
+ folder_name = ""
43
+
44
+ sensor_size = (64, 1, 1)
45
+ dtype = np.dtype([("t", int), ("x", int), ("p", int)])
46
+ ordering = dtype.names
47
+
48
+ class_map = {"o": 0,
49
+ "1": 1,
50
+ "2": 2,
51
+ "3": 3,
52
+ "4": 4,
53
+ "5": 5,
54
+ "6": 6,
55
+ "7": 7,
56
+ "8": 8,
57
+ "9": 9,
58
+ "z": 10}
59
+
60
+ def __init__(
61
+ self,
62
+ save_to: str,
63
+ train: bool = True,
64
+ single_digits=False,
65
+ transform: Optional[Callable] = None,
66
+ target_transform: Optional[Callable] = None,
67
+ ):
68
+ super().__init__(
69
+ save_to,
70
+ transform=transform,
71
+ target_transform=target_transform,
72
+ )
73
+
74
+ self.url = self.base_url
75
+ # load the data
76
+ self.file_path = os.path.join(self.location_on_system, self.filename)
77
+
78
+ if not self._check_exists():
79
+ self.download()
80
+
81
+ self.data = h5py.File(self.file_path, 'r')
82
+ self.partition = "train" if train else "test"
83
+ self.single_indices = [i for i in range(len(self.data[f"{self.partition}_labels"])) if
84
+ len(self.data[f"{self.partition}_labels"][i].decode().split("-")[-1]) == 1]
85
+ self._samples = [x.decode() for x in self.data[f"{self.partition}_labels"]]
86
+ self.single_digits = single_digits
87
+
88
+ if single_digits:
89
+ self._samples = [self._samples[i] for i in self.single_indices]
90
+
91
+ self.labels = [x.decode().split("-")[-1] for x in self.data[f"{self.partition}_labels"]]
92
+
93
+ def download(self) -> None:
94
+ response = requests.get(self.base_url, stream=True)
95
+ if response.status_code == 200:
96
+ print("Downloading N-TIDIGITS from Dropbox at {}...".format(self.base_url))
97
+ file_size = int(response.headers.get('Content-Length', 0)) # get total file size in bytes
98
+ chunk_size = 8192
99
+
100
+ os.makedirs(self.location_on_system, exist_ok=True)
101
+ # Initialize progress bar
102
+ with open(os.path.join(self.location_on_system, self.filename), 'wb') as f, tqdm(
103
+ total=file_size,
104
+ unit='B',
105
+ unit_scale=True,
106
+ desc="Downloading",
107
+ ascii=True
108
+ ) as pbar:
109
+ for chunk in response.iter_content(chunk_size=chunk_size):
110
+ if chunk: # filter out keep-alive new chunks
111
+ f.write(chunk)
112
+ pbar.update(len(chunk))
113
+ else:
114
+ print("Failed to download N-TIDIGITS from Dropbox. Please try again later.")
115
+ response.raise_for_status()
116
+ def __getitem__(self, index):
117
+ sample_id = self._samples[index]
118
+ x = np.asarray(self.data[f"{self.partition}_addresses"][sample_id])
119
+ t = np.asarray(self.data[f"{self.partition}_timestamps"][sample_id])
120
+ events = make_structured_array(
121
+ t * 1e6,
122
+ x,
123
+ 1,
124
+ dtype=self.dtype,
125
+ )
126
+
127
+ target = sample_id.split("-")[-1]
128
+
129
+ if self.single_digits:
130
+ assert len(target) == 1, "Single digit samples requested, but target is not single digit."
131
+ target = self.class_map[target]
132
+
133
+ if self.transform is not None:
134
+ events = self.transform(events)
135
+ if self.target_transform is not None:
136
+ target = self.target_transform(target)
137
+ return events, target
138
+
139
+ def __len__(self):
140
+ return len(self._samples)
141
+
142
+ def _check_exists(self):
143
+ return (
144
+ self._is_file_present()
145
+ )
@@ -46,8 +46,8 @@ def differentiator_downsample(events: np.ndarray, sensor_size: tuple, target_siz
46
46
  time = int(differentiated_time // dt)
47
47
 
48
48
  # Separate events based on polarity and apply Heaviside
49
- event_hist_pos = (np.maximum(event_histogram >= noise_threshold, 0)).clip(max=1)
50
- event_hist_neg = (-np.minimum(-event_histogram >= noise_threshold, 0)).clip(max=1)
49
+ event_hist_pos = event_histogram >= noise_threshold
50
+ event_hist_neg = -event_histogram >= noise_threshold
51
51
 
52
52
  frame_histogram[time,...,1] += event_hist_pos
53
53
  frame_histogram[time,...,0] += event_hist_neg
@@ -154,4 +154,4 @@ def integrator_downsample(events: np.ndarray, sensor_size: tuple, target_size: t
154
154
 
155
155
  dtype = np.dtype({'names': names, 'formats': formats})
156
156
 
157
- return unstructured_to_structured(events_new.copy(), dtype=dtype)
157
+ return unstructured_to_structured(events_new.copy(), dtype=dtype)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: tonic
3
- Version: 1.5.1.dev13
3
+ Version: 1.5.1.dev18
4
4
  Summary: Neuromorphic datasets and transformations.
5
5
  Home-page: UNKNOWN
6
6
  Author: The Neuromorphs of Telluride
@@ -140,6 +140,7 @@ tonic/datasets/hsd.py
140
140
  tonic/datasets/mvsec.py
141
141
  tonic/datasets/ncaltech101.py
142
142
  tonic/datasets/nmnist.py
143
+ tonic/datasets/ntidigits18.py
143
144
  tonic/datasets/pokerdvs.py
144
145
  tonic/datasets/s_mnist.py
145
146
  tonic/datasets/threeET_eyetracking.py
@@ -0,0 +1 @@
1
+ {"git_version": "e410323", "is_release": false}
@@ -1 +0,0 @@
1
- {"git_version": "82ff84c", "is_release": false}
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes