spikeinterface 0.100.4__tar.gz → 0.100.6__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 (309) hide show
  1. {spikeinterface-0.100.4/src/spikeinterface.egg-info → spikeinterface-0.100.6}/PKG-INFO +3 -3
  2. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/pyproject.toml +3 -3
  3. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/core/core_tools.py +3 -1
  4. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/core/waveform_tools.py +3 -1
  5. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/curation/remove_excess_spikes.py +4 -2
  6. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/extractors/neoextractors/openephys.py +6 -5
  7. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/extractors/nwbextractors.py +2 -1
  8. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sorters/external/kilosort4.py +17 -68
  9. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sorters/external/mountainsort5.py +25 -21
  10. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/widgets/spikes_on_traces.py +1 -2
  11. {spikeinterface-0.100.4 → spikeinterface-0.100.6/src/spikeinterface.egg-info}/PKG-INFO +3 -3
  12. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface.egg-info/requires.txt +2 -2
  13. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/LICENSE +0 -0
  14. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/README.md +0 -0
  15. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/setup.cfg +0 -0
  16. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/setup.py +0 -0
  17. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/__init__.py +0 -0
  18. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/comparison/__init__.py +0 -0
  19. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/comparison/basecomparison.py +0 -0
  20. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/comparison/collision.py +0 -0
  21. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/comparison/comparisontools.py +0 -0
  22. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/comparison/correlogram.py +0 -0
  23. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/comparison/groundtruthstudy.py +0 -0
  24. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/comparison/hybrid.py +0 -0
  25. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/comparison/multicomparisons.py +0 -0
  26. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/comparison/paircomparisons.py +0 -0
  27. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/core/__init__.py +0 -0
  28. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/core/base.py +0 -0
  29. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/core/baseevent.py +0 -0
  30. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/core/baserecording.py +0 -0
  31. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/core/baserecordingsnippets.py +0 -0
  32. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/core/basesnippets.py +0 -0
  33. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/core/basesorting.py +0 -0
  34. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/core/binaryfolder.py +0 -0
  35. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/core/binaryrecordingextractor.py +0 -0
  36. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/core/channelsaggregationrecording.py +0 -0
  37. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/core/channelslice.py +0 -0
  38. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/core/datasets.py +0 -0
  39. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/core/frameslicerecording.py +0 -0
  40. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/core/frameslicesorting.py +0 -0
  41. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/core/generate.py +0 -0
  42. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/core/globals.py +0 -0
  43. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/core/job_tools.py +0 -0
  44. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/core/node_pipeline.py +0 -0
  45. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/core/npyfoldersnippets.py +0 -0
  46. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/core/npysnippetsextractor.py +0 -0
  47. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/core/npzfolder.py +0 -0
  48. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/core/npzsortingextractor.py +0 -0
  49. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/core/numpyextractors.py +0 -0
  50. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/core/old_api_utils.py +0 -0
  51. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/core/recording_tools.py +0 -0
  52. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/core/segmentutils.py +0 -0
  53. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/core/snippets_tools.py +0 -0
  54. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/core/sorting_tools.py +0 -0
  55. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/core/sortingfolder.py +0 -0
  56. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/core/sparsity.py +0 -0
  57. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/core/template.py +0 -0
  58. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/core/template_tools.py +0 -0
  59. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/core/testing.py +0 -0
  60. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/core/testing_tools.py +0 -0
  61. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/core/unitsaggregationsorting.py +0 -0
  62. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/core/unitsselectionsorting.py +0 -0
  63. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/core/waveform_extractor.py +0 -0
  64. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/core/zarrextractors.py +0 -0
  65. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/core/zarrrecordingextractor.py +0 -0
  66. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/curation/__init__.py +0 -0
  67. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/curation/auto_merge.py +0 -0
  68. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/curation/curation_tools.py +0 -0
  69. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/curation/curationsorting.py +0 -0
  70. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/curation/mergeunitssorting.py +0 -0
  71. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/curation/remove_duplicated_spikes.py +0 -0
  72. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/curation/remove_redundant.py +0 -0
  73. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/curation/sortingview_curation.py +0 -0
  74. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/curation/splitunitsorting.py +0 -0
  75. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/exporters/__init__.py +0 -0
  76. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/exporters/report.py +0 -0
  77. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/exporters/to_phy.py +0 -0
  78. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/extractors/__init__.py +0 -0
  79. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/extractors/alfsortingextractor.py +0 -0
  80. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/extractors/bids.py +0 -0
  81. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/extractors/cbin_ibl.py +0 -0
  82. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/extractors/cellexplorersortingextractor.py +0 -0
  83. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/extractors/combinatoextractors.py +0 -0
  84. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/extractors/extractorlist.py +0 -0
  85. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/extractors/hdsortextractors.py +0 -0
  86. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/extractors/herdingspikesextractors.py +0 -0
  87. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/extractors/iblstreamingrecording.py +0 -0
  88. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/extractors/klustaextractors.py +0 -0
  89. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/extractors/matlabhelpers.py +0 -0
  90. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/extractors/mclustextractors.py +0 -0
  91. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/extractors/mcsh5extractors.py +0 -0
  92. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/extractors/mdaextractors.py +0 -0
  93. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/extractors/neoextractors/__init__.py +0 -0
  94. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/extractors/neoextractors/alphaomega.py +0 -0
  95. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/extractors/neoextractors/axona.py +0 -0
  96. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/extractors/neoextractors/biocam.py +0 -0
  97. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/extractors/neoextractors/blackrock.py +0 -0
  98. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/extractors/neoextractors/ced.py +0 -0
  99. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/extractors/neoextractors/edf.py +0 -0
  100. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/extractors/neoextractors/intan.py +0 -0
  101. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/extractors/neoextractors/maxwell.py +0 -0
  102. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/extractors/neoextractors/mcsraw.py +0 -0
  103. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/extractors/neoextractors/mearec.py +0 -0
  104. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/extractors/neoextractors/neo_utils.py +0 -0
  105. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/extractors/neoextractors/neobaseextractor.py +0 -0
  106. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/extractors/neoextractors/neuralynx.py +0 -0
  107. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/extractors/neoextractors/neuroexplorer.py +0 -0
  108. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/extractors/neoextractors/neuroscope.py +0 -0
  109. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/extractors/neoextractors/nix.py +0 -0
  110. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/extractors/neoextractors/plexon.py +0 -0
  111. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/extractors/neoextractors/plexon2.py +0 -0
  112. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/extractors/neoextractors/spike2.py +0 -0
  113. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/extractors/neoextractors/spikegadgets.py +0 -0
  114. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/extractors/neoextractors/spikeglx.py +0 -0
  115. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/extractors/neoextractors/tdt.py +0 -0
  116. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/extractors/neuropixels_utils.py +0 -0
  117. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/extractors/phykilosortextractors.py +0 -0
  118. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/extractors/shybridextractors.py +0 -0
  119. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/extractors/spykingcircusextractors.py +0 -0
  120. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/extractors/toy_example.py +0 -0
  121. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/extractors/tridesclousextractors.py +0 -0
  122. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/extractors/waveclussnippetstextractors.py +0 -0
  123. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/extractors/waveclustextractors.py +0 -0
  124. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/extractors/yassextractors.py +0 -0
  125. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/full.py +0 -0
  126. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/generation/__init__.py +0 -0
  127. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/generation/drift_tools.py +0 -0
  128. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/postprocessing/__init__.py +0 -0
  129. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/postprocessing/alignsorting.py +0 -0
  130. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/postprocessing/amplitude_scalings.py +0 -0
  131. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/postprocessing/correlograms.py +0 -0
  132. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/postprocessing/isi.py +0 -0
  133. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/postprocessing/noise_level.py +0 -0
  134. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/postprocessing/principal_component.py +0 -0
  135. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/postprocessing/spike_amplitudes.py +0 -0
  136. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/postprocessing/spike_locations.py +0 -0
  137. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/postprocessing/template_metrics.py +0 -0
  138. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/postprocessing/template_similarity.py +0 -0
  139. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/postprocessing/unit_localization.py +0 -0
  140. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/preprocessing/__init__.py +0 -0
  141. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/preprocessing/align_snippets.py +0 -0
  142. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/preprocessing/astype.py +0 -0
  143. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/preprocessing/average_across_direction.py +0 -0
  144. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/preprocessing/basepreprocessor.py +0 -0
  145. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/preprocessing/clip.py +0 -0
  146. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/preprocessing/common_reference.py +0 -0
  147. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/preprocessing/correct_lsb.py +0 -0
  148. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/preprocessing/decimate.py +0 -0
  149. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/preprocessing/deepinterpolation/__init__.py +0 -0
  150. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/preprocessing/deepinterpolation/deepinterpolation.py +0 -0
  151. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/preprocessing/deepinterpolation/generators.py +0 -0
  152. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/preprocessing/deepinterpolation/tf_utils.py +0 -0
  153. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/preprocessing/deepinterpolation/train.py +0 -0
  154. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/preprocessing/depth_order.py +0 -0
  155. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/preprocessing/detect_bad_channels.py +0 -0
  156. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/preprocessing/directional_derivative.py +0 -0
  157. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/preprocessing/filter.py +0 -0
  158. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/preprocessing/filter_gaussian.py +0 -0
  159. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/preprocessing/filter_opencl.py +0 -0
  160. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/preprocessing/highpass_spatial_filter.py +0 -0
  161. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/preprocessing/interpolate_bad_channels.py +0 -0
  162. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/preprocessing/motion.py +0 -0
  163. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/preprocessing/normalize_scale.py +0 -0
  164. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/preprocessing/phase_shift.py +0 -0
  165. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/preprocessing/preprocessing_tools.py +0 -0
  166. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/preprocessing/preprocessinglist.py +0 -0
  167. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/preprocessing/rectify.py +0 -0
  168. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/preprocessing/remove_artifacts.py +0 -0
  169. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/preprocessing/resample.py +0 -0
  170. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/preprocessing/silence_periods.py +0 -0
  171. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/preprocessing/unsigned_to_signed.py +0 -0
  172. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/preprocessing/whiten.py +0 -0
  173. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/preprocessing/zero_channel_pad.py +0 -0
  174. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/qualitymetrics/__init__.py +0 -0
  175. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/qualitymetrics/misc_metrics.py +0 -0
  176. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/qualitymetrics/pca_metrics.py +0 -0
  177. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/qualitymetrics/quality_metric_calculator.py +0 -0
  178. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/qualitymetrics/quality_metric_list.py +0 -0
  179. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/qualitymetrics/utils.py +0 -0
  180. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sorters/__init__.py +0 -0
  181. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sorters/basesorter.py +0 -0
  182. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sorters/container_tools.py +0 -0
  183. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sorters/external/__init__.py +0 -0
  184. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sorters/external/combinato.py +0 -0
  185. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sorters/external/hdsort.py +0 -0
  186. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sorters/external/hdsort_master.m +0 -0
  187. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sorters/external/herdingspikes.py +0 -0
  188. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sorters/external/ironclust.py +0 -0
  189. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sorters/external/kilosort.py +0 -0
  190. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sorters/external/kilosort2.py +0 -0
  191. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sorters/external/kilosort2_5.py +0 -0
  192. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sorters/external/kilosort2_5_master.m +0 -0
  193. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sorters/external/kilosort2_master.m +0 -0
  194. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sorters/external/kilosort3.py +0 -0
  195. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sorters/external/kilosort3_master.m +0 -0
  196. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sorters/external/kilosort_master.m +0 -0
  197. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sorters/external/kilosortbase.py +0 -0
  198. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sorters/external/klusta.py +0 -0
  199. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sorters/external/klusta_config_default.prm +0 -0
  200. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sorters/external/mountainsort4.py +0 -0
  201. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sorters/external/pykilosort.py +0 -0
  202. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sorters/external/sc_config_default.params +0 -0
  203. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sorters/external/spyking_circus.py +0 -0
  204. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sorters/external/tridesclous.py +0 -0
  205. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sorters/external/waveclus.py +0 -0
  206. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sorters/external/waveclus_master.m +0 -0
  207. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sorters/external/waveclus_snippets.py +0 -0
  208. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sorters/external/waveclus_snippets_master.m +0 -0
  209. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sorters/external/yass.py +0 -0
  210. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sorters/external/yass_config_default.yaml +0 -0
  211. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sorters/internal/__init__.py +0 -0
  212. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sorters/internal/si_based.py +0 -0
  213. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sorters/internal/spyking_circus2.py +0 -0
  214. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sorters/internal/tridesclous2.py +0 -0
  215. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sorters/launcher.py +0 -0
  216. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sorters/runsorter.py +0 -0
  217. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sorters/sorterlist.py +0 -0
  218. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sorters/utils/__init__.py +0 -0
  219. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sorters/utils/constructNPYheader.m +0 -0
  220. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sorters/utils/misc.py +0 -0
  221. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sorters/utils/shellscript.py +0 -0
  222. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sorters/utils/writeNPY.m +0 -0
  223. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sortingcomponents/__init__.py +0 -0
  224. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sortingcomponents/benchmark/__init__.py +0 -0
  225. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sortingcomponents/benchmark/benchmark_clustering.py +0 -0
  226. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sortingcomponents/benchmark/benchmark_matching.py +0 -0
  227. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sortingcomponents/benchmark/benchmark_motion_estimation.py +0 -0
  228. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sortingcomponents/benchmark/benchmark_motion_interpolation.py +0 -0
  229. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sortingcomponents/benchmark/benchmark_peak_localization.py +0 -0
  230. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sortingcomponents/benchmark/benchmark_peak_selection.py +0 -0
  231. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sortingcomponents/benchmark/benchmark_tools.py +0 -0
  232. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sortingcomponents/clustering/__init__.py +0 -0
  233. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sortingcomponents/clustering/circus.py +0 -0
  234. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sortingcomponents/clustering/clean.py +0 -0
  235. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sortingcomponents/clustering/clustering_tools.py +0 -0
  236. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sortingcomponents/clustering/dummy.py +0 -0
  237. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sortingcomponents/clustering/isocut5.py +0 -0
  238. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sortingcomponents/clustering/main.py +0 -0
  239. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sortingcomponents/clustering/merge.py +0 -0
  240. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sortingcomponents/clustering/method_list.py +0 -0
  241. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sortingcomponents/clustering/position.py +0 -0
  242. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sortingcomponents/clustering/position_and_features.py +0 -0
  243. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sortingcomponents/clustering/position_and_pca.py +0 -0
  244. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sortingcomponents/clustering/position_ptp_scaled.py +0 -0
  245. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sortingcomponents/clustering/random_projections.py +0 -0
  246. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sortingcomponents/clustering/sliding_hdbscan.py +0 -0
  247. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sortingcomponents/clustering/sliding_nn.py +0 -0
  248. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sortingcomponents/clustering/split.py +0 -0
  249. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sortingcomponents/clustering/tools.py +0 -0
  250. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sortingcomponents/clustering/triage.py +0 -0
  251. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sortingcomponents/features_from_peaks.py +0 -0
  252. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sortingcomponents/matching/__init__.py +0 -0
  253. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sortingcomponents/matching/circus.py +0 -0
  254. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sortingcomponents/matching/main.py +0 -0
  255. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sortingcomponents/matching/method_list.py +0 -0
  256. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sortingcomponents/matching/naive.py +0 -0
  257. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sortingcomponents/matching/tdc.py +0 -0
  258. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sortingcomponents/matching/wobble.py +0 -0
  259. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sortingcomponents/motion_estimation.py +0 -0
  260. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sortingcomponents/motion_interpolation.py +0 -0
  261. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sortingcomponents/peak_detection.py +0 -0
  262. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sortingcomponents/peak_localization.py +0 -0
  263. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sortingcomponents/peak_pipeline.py +0 -0
  264. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sortingcomponents/peak_selection.py +0 -0
  265. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sortingcomponents/tools.py +0 -0
  266. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sortingcomponents/waveforms/__init__.py +0 -0
  267. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sortingcomponents/waveforms/neural_network_denoiser.py +0 -0
  268. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sortingcomponents/waveforms/savgol_denoiser.py +0 -0
  269. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sortingcomponents/waveforms/temporal_pca.py +0 -0
  270. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sortingcomponents/waveforms/waveform_thresholder.py +0 -0
  271. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/sortingcomponents/waveforms/waveform_utils.py +0 -0
  272. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/widgets/__init__.py +0 -0
  273. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/widgets/all_amplitudes_distributions.py +0 -0
  274. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/widgets/amplitudes.py +0 -0
  275. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/widgets/autocorrelograms.py +0 -0
  276. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/widgets/base.py +0 -0
  277. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/widgets/collision.py +0 -0
  278. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/widgets/comparison.py +0 -0
  279. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/widgets/crosscorrelograms.py +0 -0
  280. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/widgets/gtstudy.py +0 -0
  281. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/widgets/isi_distribution.py +0 -0
  282. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/widgets/metrics.py +0 -0
  283. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/widgets/motion.py +0 -0
  284. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/widgets/multicomparison.py +0 -0
  285. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/widgets/peak_activity.py +0 -0
  286. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/widgets/probe_map.py +0 -0
  287. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/widgets/quality_metrics.py +0 -0
  288. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/widgets/rasters.py +0 -0
  289. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/widgets/sorting_summary.py +0 -0
  290. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/widgets/spike_locations.py +0 -0
  291. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/widgets/template_metrics.py +0 -0
  292. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/widgets/template_similarity.py +0 -0
  293. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/widgets/traces.py +0 -0
  294. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/widgets/unit_depths.py +0 -0
  295. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/widgets/unit_locations.py +0 -0
  296. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/widgets/unit_presence.py +0 -0
  297. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/widgets/unit_probe_map.py +0 -0
  298. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/widgets/unit_summary.py +0 -0
  299. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/widgets/unit_templates.py +0 -0
  300. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/widgets/unit_waveforms.py +0 -0
  301. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/widgets/unit_waveforms_density_map.py +0 -0
  302. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/widgets/utils.py +0 -0
  303. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/widgets/utils_ipywidgets.py +0 -0
  304. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/widgets/utils_matplotlib.py +0 -0
  305. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/widgets/utils_sortingview.py +0 -0
  306. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface/widgets/widget_list.py +0 -0
  307. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface.egg-info/SOURCES.txt +0 -0
  308. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface.egg-info/dependency_links.txt +0 -0
  309. {spikeinterface-0.100.4 → spikeinterface-0.100.6}/src/spikeinterface.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: spikeinterface
3
- Version: 0.100.4
3
+ Version: 0.100.6
4
4
  Summary: Python toolkit for analysis, visualization, and comparison of spike sorting output
5
5
  Author-email: Alessio Buccino <alessiop.buccino@gmail.com>, Samuel Garcia <sam.garcia.die@gmail.com>
6
6
  Project-URL: homepage, https://github.com/SpikeInterface/spikeinterface
@@ -25,7 +25,7 @@ Requires-Dist: neo>=0.13.0
25
25
  Requires-Dist: probeinterface>=0.2.21
26
26
  Provides-Extra: extractors
27
27
  Requires-Dist: MEArec>=1.8; extra == "extractors"
28
- Requires-Dist: pynwb>=2.3.0; extra == "extractors"
28
+ Requires-Dist: pynwb>=2.6.0; extra == "extractors"
29
29
  Requires-Dist: hdmf-zarr>=0.5.0; extra == "extractors"
30
30
  Requires-Dist: pyedflib>=0.1.30; extra == "extractors"
31
31
  Requires-Dist: sonpy; python_version < "3.10" and extra == "extractors"
@@ -41,7 +41,7 @@ Requires-Dist: ibllib>=2.21.0; extra == "streaming-extractors"
41
41
  Requires-Dist: fsspec; extra == "streaming-extractors"
42
42
  Requires-Dist: aiohttp; extra == "streaming-extractors"
43
43
  Requires-Dist: requests; extra == "streaming-extractors"
44
- Requires-Dist: pynwb>=2.3.0; extra == "streaming-extractors"
44
+ Requires-Dist: pynwb>=2.6.0; extra == "streaming-extractors"
45
45
  Requires-Dist: hdmf-zarr>=0.5.0; extra == "streaming-extractors"
46
46
  Requires-Dist: remfile; extra == "streaming-extractors"
47
47
  Requires-Dist: s3fs; extra == "streaming-extractors"
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "spikeinterface"
3
- version = "0.100.4"
3
+ version = "0.100.6"
4
4
  authors = [
5
5
  { name="Alessio Buccino", email="alessiop.buccino@gmail.com" },
6
6
  { name="Samuel Garcia", email="sam.garcia.die@gmail.com" },
@@ -59,7 +59,7 @@ changelog = "https://spikeinterface.readthedocs.io/en/latest/whatisnew.html"
59
59
 
60
60
  extractors = [
61
61
  "MEArec>=1.8",
62
- "pynwb>=2.3.0",
62
+ "pynwb>=2.6.0",
63
63
  "hdmf-zarr>=0.5.0",
64
64
  "pyedflib>=0.1.30",
65
65
  "sonpy;python_version<'3.10'",
@@ -80,7 +80,7 @@ streaming_extractors = [
80
80
  "fsspec",
81
81
  "aiohttp",
82
82
  "requests",
83
- "pynwb>=2.3.0",
83
+ "pynwb>=2.6.0",
84
84
  "hdmf-zarr>=0.5.0",
85
85
  "remfile",
86
86
  "s3fs"
@@ -7,6 +7,7 @@ import datetime
7
7
  import json
8
8
  from copy import deepcopy
9
9
 
10
+ from math import prod
10
11
 
11
12
  import numpy as np
12
13
  from tqdm import tqdm
@@ -163,7 +164,8 @@ def make_shared_array(shape, dtype):
163
164
  from multiprocessing.shared_memory import SharedMemory
164
165
 
165
166
  dtype = np.dtype(dtype)
166
- nbytes = int(np.prod(shape) * dtype.itemsize)
167
+ shape = tuple(int(x) for x in shape) # We need to be sure that shape comes in int instead of numpy scalars
168
+ nbytes = prod(shape) * dtype.itemsize
167
169
  shm = SharedMemory(name=None, create=True, size=nbytes)
168
170
  arr = np.ndarray(shape=shape, dtype=dtype, buffer=shm.buf)
169
171
  arr[:] = 0
@@ -483,7 +483,7 @@ def extract_waveforms_to_single_buffer(
483
483
  if sparsity_mask is None:
484
484
  num_chans = recording.get_num_channels()
485
485
  else:
486
- num_chans = max(np.sum(sparsity_mask, axis=1))
486
+ num_chans = int(max(np.sum(sparsity_mask, axis=1))) # This is a numpy scalar, so we cast to int
487
487
  shape = (num_spikes, nsamples, num_chans)
488
488
 
489
489
  if mode == "memmap":
@@ -696,6 +696,8 @@ def has_exceeding_spikes(recording, sorting):
696
696
  if len(spike_vector_seg) > 0:
697
697
  if spike_vector_seg["sample_index"][-1] > recording.get_num_samples(segment_index=segment_index) - 1:
698
698
  return True
699
+ if spike_vector_seg["sample_index"][0] < 0:
700
+ return True
699
701
  return False
700
702
 
701
703
 
@@ -61,7 +61,8 @@ class RemoveExcessSpikesSorting(BaseSorting):
61
61
  for segment_index in range(num_segments):
62
62
  spike_vector = parent_spike_vector[segments_bounds[segment_index] : segments_bounds[segment_index + 1]]
63
63
  end = np.searchsorted(spike_vector["sample_index"], self._num_samples[segment_index])
64
- list_spike_vectors.append(spike_vector[:end])
64
+ start = np.searchsorted(spike_vector["sample_index"], 0)
65
+ list_spike_vectors.append(spike_vector[start:end])
65
66
 
66
67
  spike_vector = np.concatenate(list_spike_vectors)
67
68
  self._cached_spike_vector = spike_vector
@@ -78,8 +79,9 @@ class RemoveExcessSpikesSortingSegment(BaseSortingSegment):
78
79
  ) -> np.ndarray:
79
80
  spike_train = self._parent_segment.get_unit_spike_train(unit_id, start_frame=start_frame, end_frame=end_frame)
80
81
  max_spike = np.searchsorted(spike_train, self._num_samples, side="left")
82
+ min_spike = np.searchsorted(spike_train, 0, side="left")
81
83
 
82
- return spike_train[:max_spike]
84
+ return spike_train[min_spike:max_spike]
83
85
 
84
86
 
85
87
  def remove_excess_spikes(sorting, recording):
@@ -180,6 +180,9 @@ class OpenEphysBinaryRecordingExtractor(NeoBaseRecordingExtractor):
180
180
  exp_id = exp_ids[0]
181
181
  else:
182
182
  exp_id = exp_ids[block_index]
183
+ rec_ids = sorted(
184
+ list(self.neo_reader.folder_structure[record_node]["experiments"][exp_id]["recordings"].keys())
185
+ )
183
186
 
184
187
  # do not load probe for NIDQ stream or if load_sync_channel is True
185
188
  if "NI-DAQmx" not in stream_name and not load_sync_channel:
@@ -229,10 +232,8 @@ class OpenEphysBinaryRecordingExtractor(NeoBaseRecordingExtractor):
229
232
  # load synchronized timestamps and set_times to recording
230
233
  recording_folder = Path(folder_path) / record_node
231
234
  stream_folders = []
232
- for segment_index in range(self.get_num_segments()):
233
- stream_folder = (
234
- recording_folder / f"experiment{exp_id}" / f"recording{segment_index+1}" / "continuous" / oe_stream
235
- )
235
+ for segment_index, rec_id in enumerate(rec_ids):
236
+ stream_folder = recording_folder / f"experiment{exp_id}" / f"recording{rec_id}" / "continuous" / oe_stream
236
237
  stream_folders.append(stream_folder)
237
238
  if load_sync_timestamps:
238
239
  if (stream_folder / "sample_numbers.npy").is_file():
@@ -245,7 +246,7 @@ class OpenEphysBinaryRecordingExtractor(NeoBaseRecordingExtractor):
245
246
  sync_times = None
246
247
  try:
247
248
  self.set_times(times=sync_times, segment_index=segment_index, with_warning=False)
248
- except AssertionError:
249
+ except:
249
250
  warnings.warn(f"Could not load synchronized timestamps for {stream_name}")
250
251
 
251
252
  self._stream_folders = stream_folders
@@ -842,7 +842,8 @@ class NwbRecordingExtractor(BaseRecording):
842
842
  data_attributes = self.electrical_series["data"].attrs
843
843
  electrical_series_conversion = data_attributes["conversion"]
844
844
  gains = electrical_series_conversion * 1e6
845
- if "channel_conversion" in data_attributes:
845
+ channel_conversion = self.electrical_series.get("channel_conversion", None)
846
+ if channel_conversion:
846
847
  gains *= self.electrical_series["channel_conversion"][:]
847
848
 
848
849
  # Channel offsets
@@ -1,8 +1,8 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  from pathlib import Path
4
- import os
5
4
  from typing import Union
5
+ from packaging.version import parse
6
6
 
7
7
  from ..basesorter import BaseSorter
8
8
  from .kilosortbase import KilosortBase
@@ -32,7 +32,7 @@ class Kilosort4Sorter(BaseSorter):
32
32
  "sig_interp": 20,
33
33
  "nt0min": None,
34
34
  "dmin": None,
35
- "dminx": None,
35
+ "dminx": 32,
36
36
  "min_template_size": 10,
37
37
  "template_sizes": 5,
38
38
  "nearest_chans": 10,
@@ -51,10 +51,11 @@ class Kilosort4Sorter(BaseSorter):
51
51
  "save_extra_kwargs": False,
52
52
  "skip_kilosort_preprocessing": False,
53
53
  "scaleproc": None,
54
+ "torch_device": "auto",
54
55
  }
55
56
 
56
57
  _params_description = {
57
- "batch_size": "Number of samples per batch. Default value: 60000.",
58
+ "batch_size": "Number of samples included in each batch of data.",
58
59
  "nblocks": "Number of non-overlapping blocks for drift correction (additional nblocks-1 blocks are created in the overlaps). Default value: 1.",
59
60
  "Th_universal": "Spike detection threshold for universal templates. Th(1) in previous versions of Kilosort. Default value: 9.",
60
61
  "Th_learned": "Spike detection threshold for learned templates. Th(2) in previous versions of Kilosort. Default value: 8.",
@@ -68,7 +69,7 @@ class Kilosort4Sorter(BaseSorter):
68
69
  "sig_interp": "For drift correction, sigma for interpolation (spatial standard deviation). Approximate smoothness scale in units of microns. Default value: 20.",
69
70
  "nt0min": "Sample index for aligning waveforms, so that their minimum or maximum value happens here. Default of 20. Default value: None.",
70
71
  "dmin": "Vertical spacing of template centers used for spike detection, in microns. Determined automatically by default. Default value: None.",
71
- "dminx": "Horizontal spacing of template centers used for spike detection, in microns. Determined automatically by default. Default value: None.",
72
+ "dminx": "Horizontal spacing of template centers used for spike detection, in microns. Default value: 32.",
72
73
  "min_template_size": "Standard deviation of the smallest, spatial envelope Gaussian used for universal templates. Default value: 10.",
73
74
  "template_sizes": "Number of sizes for universal spike templates (multiples of the min_template_size). Default value: 5.",
74
75
  "nearest_chans": "Number of nearest channels to consider when finding local maxima during spike detection. Default value: 10.",
@@ -87,6 +88,7 @@ class Kilosort4Sorter(BaseSorter):
87
88
  "save_extra_kwargs": "If True, additional kwargs are saved to the output",
88
89
  "skip_kilosort_preprocessing": "Can optionally skip the internal kilosort preprocessing",
89
90
  "scaleproc": "int16 scaling of whitened data, if None set to 200.",
91
+ "torch_device": "Select the torch device auto/cuda/cpu",
90
92
  }
91
93
 
92
94
  sorter_description = """Kilosort4 is a Python package for spike sorting on GPUs with template matching.
@@ -152,7 +154,10 @@ class Kilosort4Sorter(BaseSorter):
152
154
 
153
155
  probe_filename = sorter_output_folder / "probe.prb"
154
156
 
155
- device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
157
+ torch_device = params["torch_device"]
158
+ if torch_device == "auto":
159
+ torch_device = "cuda" if torch.cuda.is_available() else "cpu"
160
+ device = torch.device(torch_device)
156
161
 
157
162
  # load probe
158
163
  recording = cls.load_recording_from_folder(sorter_output_folder.parent, with_warnings=False)
@@ -222,39 +227,14 @@ class Kilosort4Sorter(BaseSorter):
222
227
  torch.cuda.manual_seed_all(1)
223
228
  torch.random.manual_seed(1)
224
229
  # if not params["skip_kilosort_preprocessing"]:
225
- if params["do_correction"]:
226
- # this function applies both preprocessing and drift correction
227
- ops, bfile, st0 = compute_drift_correction(
228
- ops, device, tic0=tic0, progress_bar=progress_bar, file_object=file_object
229
- )
230
- else:
230
+ if not params["do_correction"]:
231
231
  print("Skipping drift correction.")
232
- hp_filter = ops["preprocessing"]["hp_filter"]
233
- whiten_mat = ops["preprocessing"]["whiten_mat"]
234
-
235
- bfile = BinaryFiltered(
236
- ops["filename"],
237
- n_chan_bin,
238
- fs,
239
- NT,
240
- nt,
241
- twav_min,
242
- chan_map,
243
- hp_filter=hp_filter,
244
- whiten_mat=whiten_mat,
245
- device=device,
246
- do_CAR=do_CAR,
247
- invert_sign=invert,
248
- dtype=dtype,
249
- tmin=tmin,
250
- tmax=tmax,
251
- artifact_threshold=artifact,
252
- file_object=file_object,
253
- )
232
+ ops["nblocks"] = 0
254
233
 
255
- # TODO: don't think we need to do this actually
256
- # Save intermediate `ops` for use by GUI plots
257
- # io.save_ops(ops, results_dir)
234
+ # this function applies both preprocessing and drift correction
235
+ ops, bfile, st0 = compute_drift_correction(
236
+ ops, device, tic0=tic0, progress_bar=progress_bar, file_object=file_object
237
+ )
258
238
 
259
239
  # Sort spikes and save results
260
240
  st, tF, _, _ = detect_spikes(ops, device, bfile, tic0=tic0, progress_bar=progress_bar)
@@ -263,39 +243,8 @@ class Kilosort4Sorter(BaseSorter):
263
243
  ops["preprocessing"] = dict(
264
244
  hp_filter=torch.as_tensor(np.zeros(1)), whiten_mat=torch.as_tensor(np.eye(recording.get_num_channels()))
265
245
  )
266
- ops, similar_templates, is_ref, est_contam_rate = save_sorting(
267
- ops, results_dir, st, clu, tF, Wall, bfile.imin, tic0, save_extra_vars=save_extra_vars
268
- )
269
-
270
- # # Clean-up temporary files
271
- # if params["delete_recording_dat"] and (recording_file := sorter_output_folder / "recording.dat").exists():
272
- # recording_file.unlink()
273
-
274
- # all_tmp_files = ("matlab_files", "temp_wh.dat")
275
-
276
- # if isinstance(params["delete_tmp_files"], bool):
277
- # if params["delete_tmp_files"]:
278
- # tmp_files_to_remove = all_tmp_files
279
- # else:
280
- # tmp_files_to_remove = ()
281
- # else:
282
- # assert isinstance(
283
- # params["delete_tmp_files"], (tuple, list)
284
- # ), "`delete_tmp_files` must be a `Bool`, `Tuple` or `List`."
285
-
286
- # for name in params["delete_tmp_files"]:
287
- # assert name in all_tmp_files, f"{name} is not a valid option, must be one of: {all_tmp_files}"
288
-
289
- # tmp_files_to_remove = params["delete_tmp_files"]
290
-
291
- # if "temp_wh.dat" in tmp_files_to_remove:
292
- # if (temp_wh_file := sorter_output_folder / "temp_wh.dat").exists():
293
- # temp_wh_file.unlink()
294
246
 
295
- # if "matlab_files" in tmp_files_to_remove:
296
- # for ext in ["*.m", "*.mat"]:
297
- # for temp_file in sorter_output_folder.glob(ext):
298
- # temp_file.unlink()
247
+ _ = save_sorting(ops, results_dir, st, clu, tF, Wall, bfile.imin, tic0, save_extra_vars=save_extra_vars)
299
248
 
300
249
  @classmethod
301
250
  def _get_result_from_folder(cls, sorter_output_folder):
@@ -3,14 +3,15 @@ from __future__ import annotations
3
3
  from pathlib import Path
4
4
  from packaging.version import parse
5
5
 
6
- from tempfile import TemporaryDirectory
7
6
 
7
+ import shutil
8
8
  import numpy as np
9
+ from warnings import warn
9
10
 
10
11
  from spikeinterface.preprocessing import bandpass_filter, whiten
11
12
 
12
13
  from spikeinterface.core.baserecording import BaseRecording
13
- from ..basesorter import BaseSorter
14
+ from ..basesorter import BaseSorter, get_job_kwargs
14
15
 
15
16
  from spikeinterface.extractors import NpzSortingExtractor
16
17
 
@@ -43,8 +44,7 @@ class Mountainsort5Sorter(BaseSorter):
43
44
  "freq_max": 6000,
44
45
  "filter": True,
45
46
  "whiten": True, # Important to do whitening
46
- "temporary_base_dir": None,
47
- "n_jobs_for_preprocessing": -1,
47
+ "delete_temporary_recording": True,
48
48
  }
49
49
 
50
50
  _params_description = {
@@ -68,8 +68,7 @@ class Mountainsort5Sorter(BaseSorter):
68
68
  "freq_max": "Low-pass filter cutoff frequency",
69
69
  "filter": "Enable or disable filter",
70
70
  "whiten": "Enable or disable whitening",
71
- "temporary_base_dir": "Temporary directory base directory for storing cached recording",
72
- "n_jobs_for_preprocessing": "Number of parallel jobs for creating the cached recording",
71
+ "delete_temporary_recording": "If True, the temporary recording file is deleted after sorting (this may fail on Windows requiring the end-user to delete the file themselves later)",
73
72
  }
74
73
 
75
74
  sorter_description = "MountainSort5 uses Isosplit clustering. It is an updated version of MountainSort4. See https://doi.org/10.1016/j.neuron.2017.08.030"
@@ -186,21 +185,26 @@ class Mountainsort5Sorter(BaseSorter):
186
185
  block_sorting_parameters=scheme2_sorting_parameters, block_duration_sec=p["scheme3_block_duration_sec"]
187
186
  )
188
187
 
189
- with TemporaryDirectory(dir=p["temporary_base_dir"]) as tmpdir:
190
- # cache the recording to a temporary directory for efficient reading (so we don't have to re-filter)
191
- recording_cached = create_cached_recording(
192
- recording=recording, folder=tmpdir, n_jobs=p["n_jobs_for_preprocessing"]
193
- )
194
-
195
- scheme = p["scheme"]
196
- if scheme == "1":
197
- sorting = ms5.sorting_scheme1(recording=recording_cached, sorting_parameters=scheme1_sorting_parameters)
198
- elif p["scheme"] == "2":
199
- sorting = ms5.sorting_scheme2(recording=recording_cached, sorting_parameters=scheme2_sorting_parameters)
200
- elif p["scheme"] == "3":
201
- sorting = ms5.sorting_scheme3(recording=recording_cached, sorting_parameters=scheme3_sorting_parameters)
202
- else:
203
- raise ValueError(f"Invalid scheme: {scheme} given. scheme must be one of '1', '2' or '3'")
188
+ if not recording.is_binary_compatible():
189
+ recording_cached = recording.save(folder=sorter_output_folder / "recording", **get_job_kwargs(p, verbose))
190
+ else:
191
+ recording_cached = recording
192
+
193
+ if p["scheme"] == "1":
194
+ sorting = ms5.sorting_scheme1(recording=recording_cached, sorting_parameters=scheme1_sorting_parameters)
195
+ elif p["scheme"] == "2":
196
+ sorting = ms5.sorting_scheme2(recording=recording_cached, sorting_parameters=scheme2_sorting_parameters)
197
+ elif p["scheme"] == "3":
198
+ sorting = ms5.sorting_scheme3(recording=recording_cached, sorting_parameters=scheme3_sorting_parameters)
199
+ else:
200
+ raise ValueError(f"Invalid scheme: {p['scheme']} given. scheme must be one of '1', '2' or '3'")
201
+
202
+ if p["delete_temporary_recording"]:
203
+ if not recording.is_binary_compatible():
204
+ del recording_cached
205
+ shutil.rmtree(sorter_output_folder / "recording", ignore_errors=True)
206
+ if Path(sorter_output_folder / "recording").is_dir():
207
+ warn("cleanup failed, please remove file yourself if desired")
204
208
 
205
209
  NpzSortingExtractor.write_sorting(sorting, str(sorter_output_folder / "firings.npz"))
206
210
 
@@ -183,8 +183,7 @@ class SpikesOnTracesWidget(BaseWidget):
183
183
  spike_times_to_plot = sorting.get_unit_spike_train(
184
184
  unit, segment_index=segment_index, return_times=True
185
185
  )[spike_start:spike_end]
186
- unit_y_loc = min_y + max_y - dp.unit_locations[unit][1]
187
- # markers = np.ones_like(spike_frames_to_plot) * (min_y + max_y - dp.unit_locations[unit][1])
186
+ unit_y_loc = dp.unit_locations[unit][1]
188
187
  width = 2 * 1e-3
189
188
  ellipse_kwargs = dict(width=width, height=10, fc="none", ec=dp.unit_colors[unit], lw=2)
190
189
  patches = [Ellipse((s, unit_y_loc), **ellipse_kwargs) for s in spike_times_to_plot]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: spikeinterface
3
- Version: 0.100.4
3
+ Version: 0.100.6
4
4
  Summary: Python toolkit for analysis, visualization, and comparison of spike sorting output
5
5
  Author-email: Alessio Buccino <alessiop.buccino@gmail.com>, Samuel Garcia <sam.garcia.die@gmail.com>
6
6
  Project-URL: homepage, https://github.com/SpikeInterface/spikeinterface
@@ -25,7 +25,7 @@ Requires-Dist: neo>=0.13.0
25
25
  Requires-Dist: probeinterface>=0.2.21
26
26
  Provides-Extra: extractors
27
27
  Requires-Dist: MEArec>=1.8; extra == "extractors"
28
- Requires-Dist: pynwb>=2.3.0; extra == "extractors"
28
+ Requires-Dist: pynwb>=2.6.0; extra == "extractors"
29
29
  Requires-Dist: hdmf-zarr>=0.5.0; extra == "extractors"
30
30
  Requires-Dist: pyedflib>=0.1.30; extra == "extractors"
31
31
  Requires-Dist: sonpy; python_version < "3.10" and extra == "extractors"
@@ -41,7 +41,7 @@ Requires-Dist: ibllib>=2.21.0; extra == "streaming-extractors"
41
41
  Requires-Dist: fsspec; extra == "streaming-extractors"
42
42
  Requires-Dist: aiohttp; extra == "streaming-extractors"
43
43
  Requires-Dist: requests; extra == "streaming-extractors"
44
- Requires-Dist: pynwb>=2.3.0; extra == "streaming-extractors"
44
+ Requires-Dist: pynwb>=2.6.0; extra == "streaming-extractors"
45
45
  Requires-Dist: hdmf-zarr>=0.5.0; extra == "streaming-extractors"
46
46
  Requires-Dist: remfile; extra == "streaming-extractors"
47
47
  Requires-Dist: s3fs; extra == "streaming-extractors"
@@ -26,7 +26,7 @@ numba
26
26
 
27
27
  [extractors]
28
28
  MEArec>=1.8
29
- pynwb>=2.3.0
29
+ pynwb>=2.6.0
30
30
  hdmf-zarr>=0.5.0
31
31
  pyedflib>=0.1.30
32
32
  lxml
@@ -67,7 +67,7 @@ ibllib>=2.21.0
67
67
  fsspec
68
68
  aiohttp
69
69
  requests
70
- pynwb>=2.3.0
70
+ pynwb>=2.6.0
71
71
  hdmf-zarr>=0.5.0
72
72
  remfile
73
73
  s3fs