py-neuromodulation 0.0.2__py3-none-any.whl → 0.0.3__py3-none-any.whl

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 (204) hide show
  1. docs/build/_downloads/09df217f95985497f45d69e2d4bdc5b1/plot_2_example_add_feature.py +68 -0
  2. docs/build/_downloads/3b4900a2b2818ff30362215b76f7d5eb/plot_1_example_BIDS.py +233 -0
  3. docs/build/_downloads/7e92dd2e6cc86b239d14cafad972ae4f/plot_3_example_sharpwave_analysis.py +219 -0
  4. docs/build/_downloads/c2db0bf2b334d541b00662b991682256/plot_6_real_time_demo.py +97 -0
  5. docs/build/_downloads/ce3914826f782cbd1ea8fd024eaf0ac3/plot_5_example_rmap_computing.py +64 -0
  6. docs/build/_downloads/da36848a41e6a3235d91fb7cfb6d59b4/plot_0_first_demo.py +192 -0
  7. docs/build/_downloads/eaa4305c75b19a1e2eea941f742a6331/plot_4_example_gridPointProjection.py +210 -0
  8. docs/build/html/_downloads/09df217f95985497f45d69e2d4bdc5b1/plot_2_example_add_feature.py +68 -0
  9. docs/build/html/_downloads/3b4900a2b2818ff30362215b76f7d5eb/plot_1_example_BIDS.py +239 -0
  10. docs/build/html/_downloads/7e92dd2e6cc86b239d14cafad972ae4f/plot_3_example_sharpwave_analysis.py +219 -0
  11. docs/build/html/_downloads/c2db0bf2b334d541b00662b991682256/plot_6_real_time_demo.py +97 -0
  12. docs/build/html/_downloads/ce3914826f782cbd1ea8fd024eaf0ac3/plot_5_example_rmap_computing.py +64 -0
  13. docs/build/html/_downloads/da36848a41e6a3235d91fb7cfb6d59b4/plot_0_first_demo.py +192 -0
  14. docs/build/html/_downloads/eaa4305c75b19a1e2eea941f742a6331/plot_4_example_gridPointProjection.py +210 -0
  15. docs/source/_build/html/_downloads/09df217f95985497f45d69e2d4bdc5b1/plot_2_example_add_feature.py +76 -0
  16. docs/source/_build/html/_downloads/0d0d0a76e8f648d5d3cbc47da6351932/plot_real_time_demo.py +97 -0
  17. docs/source/_build/html/_downloads/3b4900a2b2818ff30362215b76f7d5eb/plot_1_example_BIDS.py +240 -0
  18. docs/source/_build/html/_downloads/5d73cadc59a8805c47e3b84063afc157/plot_example_BIDS.py +233 -0
  19. docs/source/_build/html/_downloads/7660317fa5a6bfbd12fcca9961457fc4/plot_example_rmap_computing.py +63 -0
  20. docs/source/_build/html/_downloads/7e92dd2e6cc86b239d14cafad972ae4f/plot_3_example_sharpwave_analysis.py +219 -0
  21. docs/source/_build/html/_downloads/839e5b319379f7fd9e867deb00fd797f/plot_example_gridPointProjection.py +210 -0
  22. docs/source/_build/html/_downloads/ae8be19afe5e559f011fc9b138968ba0/plot_first_demo.py +192 -0
  23. docs/source/_build/html/_downloads/b8b06cacc17969d3725a0b6f1d7741c5/plot_example_sharpwave_analysis.py +219 -0
  24. docs/source/_build/html/_downloads/c2db0bf2b334d541b00662b991682256/plot_6_real_time_demo.py +121 -0
  25. docs/source/_build/html/_downloads/c31a86c0b68cb4167d968091ace8080d/plot_example_add_feature.py +68 -0
  26. docs/source/_build/html/_downloads/ce3914826f782cbd1ea8fd024eaf0ac3/plot_5_example_rmap_computing.py +64 -0
  27. docs/source/_build/html/_downloads/da36848a41e6a3235d91fb7cfb6d59b4/plot_0_first_demo.py +189 -0
  28. docs/source/_build/html/_downloads/eaa4305c75b19a1e2eea941f742a6331/plot_4_example_gridPointProjection.py +210 -0
  29. docs/source/auto_examples/plot_0_first_demo.py +189 -0
  30. docs/source/auto_examples/plot_1_example_BIDS.py +240 -0
  31. docs/source/auto_examples/plot_2_example_add_feature.py +76 -0
  32. docs/source/auto_examples/plot_3_example_sharpwave_analysis.py +219 -0
  33. docs/source/auto_examples/plot_4_example_gridPointProjection.py +210 -0
  34. docs/source/auto_examples/plot_5_example_rmap_computing.py +64 -0
  35. docs/source/auto_examples/plot_6_real_time_demo.py +121 -0
  36. docs/source/conf.py +105 -0
  37. examples/plot_0_first_demo.py +189 -0
  38. examples/plot_1_example_BIDS.py +240 -0
  39. examples/plot_2_example_add_feature.py +76 -0
  40. examples/plot_3_example_sharpwave_analysis.py +219 -0
  41. examples/plot_4_example_gridPointProjection.py +210 -0
  42. examples/plot_5_example_rmap_computing.py +64 -0
  43. examples/plot_6_real_time_demo.py +121 -0
  44. packages/realtime_decoding/build/lib/realtime_decoding/__init__.py +4 -0
  45. packages/realtime_decoding/build/lib/realtime_decoding/decoder.py +104 -0
  46. packages/realtime_decoding/build/lib/realtime_decoding/features.py +163 -0
  47. packages/realtime_decoding/build/lib/realtime_decoding/helpers.py +15 -0
  48. packages/realtime_decoding/build/lib/realtime_decoding/run_decoding.py +345 -0
  49. packages/realtime_decoding/build/lib/realtime_decoding/trainer.py +54 -0
  50. packages/tmsi/build/lib/TMSiFileFormats/__init__.py +37 -0
  51. packages/tmsi/build/lib/TMSiFileFormats/file_formats/__init__.py +36 -0
  52. packages/tmsi/build/lib/TMSiFileFormats/file_formats/lsl_stream_writer.py +200 -0
  53. packages/tmsi/build/lib/TMSiFileFormats/file_formats/poly5_file_writer.py +496 -0
  54. packages/tmsi/build/lib/TMSiFileFormats/file_formats/poly5_to_edf_converter.py +236 -0
  55. packages/tmsi/build/lib/TMSiFileFormats/file_formats/xdf_file_writer.py +977 -0
  56. packages/tmsi/build/lib/TMSiFileFormats/file_readers/__init__.py +35 -0
  57. packages/tmsi/build/lib/TMSiFileFormats/file_readers/edf_reader.py +116 -0
  58. packages/tmsi/build/lib/TMSiFileFormats/file_readers/poly5reader.py +294 -0
  59. packages/tmsi/build/lib/TMSiFileFormats/file_readers/xdf_reader.py +229 -0
  60. packages/tmsi/build/lib/TMSiFileFormats/file_writer.py +102 -0
  61. packages/tmsi/build/lib/TMSiPlotters/__init__.py +2 -0
  62. packages/tmsi/build/lib/TMSiPlotters/gui/__init__.py +39 -0
  63. packages/tmsi/build/lib/TMSiPlotters/gui/_plotter_gui.py +234 -0
  64. packages/tmsi/build/lib/TMSiPlotters/gui/plotting_gui.py +440 -0
  65. packages/tmsi/build/lib/TMSiPlotters/plotters/__init__.py +44 -0
  66. packages/tmsi/build/lib/TMSiPlotters/plotters/hd_emg_plotter.py +446 -0
  67. packages/tmsi/build/lib/TMSiPlotters/plotters/impedance_plotter.py +589 -0
  68. packages/tmsi/build/lib/TMSiPlotters/plotters/signal_plotter.py +1326 -0
  69. packages/tmsi/build/lib/TMSiSDK/__init__.py +54 -0
  70. packages/tmsi/build/lib/TMSiSDK/device.py +588 -0
  71. packages/tmsi/build/lib/TMSiSDK/devices/__init__.py +34 -0
  72. packages/tmsi/build/lib/TMSiSDK/devices/saga/TMSi_Device_API.py +1764 -0
  73. packages/tmsi/build/lib/TMSiSDK/devices/saga/__init__.py +34 -0
  74. packages/tmsi/build/lib/TMSiSDK/devices/saga/saga_device.py +1366 -0
  75. packages/tmsi/build/lib/TMSiSDK/devices/saga/saga_types.py +520 -0
  76. packages/tmsi/build/lib/TMSiSDK/devices/saga/xml_saga_config.py +165 -0
  77. packages/tmsi/build/lib/TMSiSDK/error.py +95 -0
  78. packages/tmsi/build/lib/TMSiSDK/sample_data.py +63 -0
  79. packages/tmsi/build/lib/TMSiSDK/sample_data_server.py +99 -0
  80. packages/tmsi/build/lib/TMSiSDK/settings.py +45 -0
  81. packages/tmsi/build/lib/TMSiSDK/tmsi_device.py +111 -0
  82. packages/tmsi/build/lib/__init__.py +4 -0
  83. packages/tmsi/build/lib/apex_sdk/__init__.py +34 -0
  84. packages/tmsi/build/lib/apex_sdk/device/__init__.py +41 -0
  85. packages/tmsi/build/lib/apex_sdk/device/devices/apex/apex_API.py +1009 -0
  86. packages/tmsi/build/lib/apex_sdk/device/devices/apex/apex_API_enums.py +239 -0
  87. packages/tmsi/build/lib/apex_sdk/device/devices/apex/apex_API_structures.py +668 -0
  88. packages/tmsi/build/lib/apex_sdk/device/devices/apex/apex_device.py +1611 -0
  89. packages/tmsi/build/lib/apex_sdk/device/devices/apex/apex_dongle.py +38 -0
  90. packages/tmsi/build/lib/apex_sdk/device/devices/apex/apex_event_reader.py +57 -0
  91. packages/tmsi/build/lib/apex_sdk/device/devices/apex/apex_structures/apex_channel.py +44 -0
  92. packages/tmsi/build/lib/apex_sdk/device/devices/apex/apex_structures/apex_config.py +150 -0
  93. packages/tmsi/build/lib/apex_sdk/device/devices/apex/apex_structures/apex_const.py +36 -0
  94. packages/tmsi/build/lib/apex_sdk/device/devices/apex/apex_structures/apex_impedance_channel.py +48 -0
  95. packages/tmsi/build/lib/apex_sdk/device/devices/apex/apex_structures/apex_info.py +108 -0
  96. packages/tmsi/build/lib/apex_sdk/device/devices/apex/apex_structures/dongle_info.py +39 -0
  97. packages/tmsi/build/lib/apex_sdk/device/devices/apex/measurements/download_measurement.py +77 -0
  98. packages/tmsi/build/lib/apex_sdk/device/devices/apex/measurements/eeg_measurement.py +150 -0
  99. packages/tmsi/build/lib/apex_sdk/device/devices/apex/measurements/impedance_measurement.py +129 -0
  100. packages/tmsi/build/lib/apex_sdk/device/threads/conversion_thread.py +59 -0
  101. packages/tmsi/build/lib/apex_sdk/device/threads/sampling_thread.py +57 -0
  102. packages/tmsi/build/lib/apex_sdk/device/tmsi_channel.py +83 -0
  103. packages/tmsi/build/lib/apex_sdk/device/tmsi_device.py +201 -0
  104. packages/tmsi/build/lib/apex_sdk/device/tmsi_device_enums.py +103 -0
  105. packages/tmsi/build/lib/apex_sdk/device/tmsi_dongle.py +43 -0
  106. packages/tmsi/build/lib/apex_sdk/device/tmsi_event_reader.py +50 -0
  107. packages/tmsi/build/lib/apex_sdk/device/tmsi_measurement.py +118 -0
  108. packages/tmsi/build/lib/apex_sdk/sample_data_server/__init__.py +33 -0
  109. packages/tmsi/build/lib/apex_sdk/sample_data_server/event_data.py +44 -0
  110. packages/tmsi/build/lib/apex_sdk/sample_data_server/sample_data.py +50 -0
  111. packages/tmsi/build/lib/apex_sdk/sample_data_server/sample_data_server.py +136 -0
  112. packages/tmsi/build/lib/apex_sdk/tmsi_errors/error.py +126 -0
  113. packages/tmsi/build/lib/apex_sdk/tmsi_sdk.py +113 -0
  114. packages/tmsi/build/lib/apex_sdk/tmsi_utilities/apex/apex_structure_generator.py +134 -0
  115. packages/tmsi/build/lib/apex_sdk/tmsi_utilities/decorators.py +60 -0
  116. packages/tmsi/build/lib/apex_sdk/tmsi_utilities/logger_filter.py +42 -0
  117. packages/tmsi/build/lib/apex_sdk/tmsi_utilities/singleton.py +42 -0
  118. packages/tmsi/build/lib/apex_sdk/tmsi_utilities/support_functions.py +72 -0
  119. packages/tmsi/build/lib/apex_sdk/tmsi_utilities/tmsi_logger.py +98 -0
  120. py_neuromodulation/{helper.py → _write_example_dataset_helper.py} +1 -1
  121. py_neuromodulation/nm_EpochStream.py +2 -3
  122. py_neuromodulation/nm_IO.py +43 -70
  123. py_neuromodulation/nm_RMAP.py +308 -11
  124. py_neuromodulation/nm_analysis.py +1 -1
  125. py_neuromodulation/nm_artifacts.py +25 -0
  126. py_neuromodulation/nm_bispectra.py +64 -29
  127. py_neuromodulation/nm_bursts.py +44 -30
  128. py_neuromodulation/nm_coherence.py +2 -1
  129. py_neuromodulation/nm_features.py +4 -2
  130. py_neuromodulation/nm_filter.py +63 -32
  131. py_neuromodulation/nm_filter_preprocessing.py +91 -0
  132. py_neuromodulation/nm_fooof.py +47 -29
  133. py_neuromodulation/nm_mne_connectivity.py +1 -1
  134. py_neuromodulation/nm_normalization.py +50 -74
  135. py_neuromodulation/nm_oscillatory.py +151 -31
  136. py_neuromodulation/nm_plots.py +13 -10
  137. py_neuromodulation/nm_rereference.py +10 -8
  138. py_neuromodulation/nm_run_analysis.py +28 -13
  139. py_neuromodulation/nm_sharpwaves.py +103 -136
  140. py_neuromodulation/nm_stats.py +44 -30
  141. py_neuromodulation/nm_stream_abc.py +18 -10
  142. py_neuromodulation/nm_stream_offline.py +181 -40
  143. py_neuromodulation/utils/_logging.py +24 -0
  144. {py_neuromodulation-0.0.2.dist-info → py_neuromodulation-0.0.3.dist-info}/METADATA +182 -142
  145. py_neuromodulation-0.0.3.dist-info/RECORD +188 -0
  146. {py_neuromodulation-0.0.2.dist-info → py_neuromodulation-0.0.3.dist-info}/WHEEL +2 -1
  147. py_neuromodulation-0.0.3.dist-info/top_level.txt +5 -0
  148. tests/__init__.py +0 -0
  149. tests/conftest.py +117 -0
  150. tests/test_all_examples.py +10 -0
  151. tests/test_all_features.py +63 -0
  152. tests/test_bispectra.py +70 -0
  153. tests/test_bursts.py +105 -0
  154. tests/test_feature_sampling_rates.py +143 -0
  155. tests/test_fooof.py +16 -0
  156. tests/test_initalization_offline_stream.py +41 -0
  157. tests/test_multiprocessing.py +58 -0
  158. tests/test_nan_values.py +29 -0
  159. tests/test_nm_filter.py +95 -0
  160. tests/test_nm_resample.py +63 -0
  161. tests/test_normalization_settings.py +146 -0
  162. tests/test_notch_filter.py +31 -0
  163. tests/test_osc_features.py +424 -0
  164. tests/test_preprocessing_filter.py +151 -0
  165. tests/test_rereference.py +171 -0
  166. tests/test_sampling.py +57 -0
  167. tests/test_settings_change_after_init.py +76 -0
  168. tests/test_sharpwave.py +165 -0
  169. tests/test_target_channel_add.py +100 -0
  170. tests/test_timing.py +80 -0
  171. py_neuromodulation/data/README +0 -6
  172. py_neuromodulation/data/dataset_description.json +0 -8
  173. py_neuromodulation/data/derivatives/sub-testsub_ses-EphysMedOff_task-gripforce_run-0/MOV_aligned_features_ch_ECOG_RIGHT_0_all.png +0 -0
  174. py_neuromodulation/data/derivatives/sub-testsub_ses-EphysMedOff_task-gripforce_run-0/all_feature_plt.pdf +0 -0
  175. py_neuromodulation/data/derivatives/sub-testsub_ses-EphysMedOff_task-gripforce_run-0/sub-testsub_ses-EphysMedOff_task-gripforce_run-0_FEATURES.csv +0 -182
  176. py_neuromodulation/data/derivatives/sub-testsub_ses-EphysMedOff_task-gripforce_run-0/sub-testsub_ses-EphysMedOff_task-gripforce_run-0_LM_ML_RES.p +0 -0
  177. py_neuromodulation/data/derivatives/sub-testsub_ses-EphysMedOff_task-gripforce_run-0/sub-testsub_ses-EphysMedOff_task-gripforce_run-0_SETTINGS.json +0 -273
  178. py_neuromodulation/data/derivatives/sub-testsub_ses-EphysMedOff_task-gripforce_run-0/sub-testsub_ses-EphysMedOff_task-gripforce_run-0_SIDECAR.json +0 -6
  179. py_neuromodulation/data/derivatives/sub-testsub_ses-EphysMedOff_task-gripforce_run-0/sub-testsub_ses-EphysMedOff_task-gripforce_run-0_decoding_performance.png +0 -0
  180. py_neuromodulation/data/derivatives/sub-testsub_ses-EphysMedOff_task-gripforce_run-0/sub-testsub_ses-EphysMedOff_task-gripforce_run-0_nm_channels.csv +0 -11
  181. py_neuromodulation/data/participants.json +0 -32
  182. py_neuromodulation/data/participants.tsv +0 -2
  183. py_neuromodulation/data/sub-testsub/ses-EphysMedOff/ieeg/sub-testsub_ses-EphysMedOff_space-mni_coordsystem.json +0 -5
  184. py_neuromodulation/data/sub-testsub/ses-EphysMedOff/ieeg/sub-testsub_ses-EphysMedOff_space-mni_electrodes.tsv +0 -11
  185. py_neuromodulation/data/sub-testsub/ses-EphysMedOff/ieeg/sub-testsub_ses-EphysMedOff_task-gripforce_run-0_channels.tsv +0 -11
  186. py_neuromodulation/data/sub-testsub/ses-EphysMedOff/ieeg/sub-testsub_ses-EphysMedOff_task-gripforce_run-0_ieeg.eeg +0 -0
  187. py_neuromodulation/data/sub-testsub/ses-EphysMedOff/ieeg/sub-testsub_ses-EphysMedOff_task-gripforce_run-0_ieeg.json +0 -18
  188. py_neuromodulation/data/sub-testsub/ses-EphysMedOff/ieeg/sub-testsub_ses-EphysMedOff_task-gripforce_run-0_ieeg.vhdr +0 -35
  189. py_neuromodulation/data/sub-testsub/ses-EphysMedOff/ieeg/sub-testsub_ses-EphysMedOff_task-gripforce_run-0_ieeg.vmrk +0 -13
  190. py_neuromodulation/data/sub-testsub/ses-EphysMedOff/sub-testsub_ses-EphysMedOff_scans.tsv +0 -2
  191. py_neuromodulation/grid_cortex.tsv +0 -40
  192. py_neuromodulation/grid_subcortex.tsv +0 -1429
  193. py_neuromodulation/nm_settings.json +0 -290
  194. py_neuromodulation/plots/STN_surf.mat +0 -0
  195. py_neuromodulation/plots/Vertices.mat +0 -0
  196. py_neuromodulation/plots/faces.mat +0 -0
  197. py_neuromodulation/plots/grid.mat +0 -0
  198. py_neuromodulation/py_neuromodulation.egg-info/PKG-INFO +0 -104
  199. py_neuromodulation/py_neuromodulation.egg-info/dependency_links.txt +0 -1
  200. py_neuromodulation/py_neuromodulation.egg-info/requires.txt +0 -26
  201. py_neuromodulation/py_neuromodulation.egg-info/top_level.txt +0 -1
  202. py_neuromodulation-0.0.2.dist-info/RECORD +0 -73
  203. /py_neuromodulation/{py_neuromodulation.egg-info/SOURCES.txt → utils/__init__.py} +0 -0
  204. {py_neuromodulation-0.0.2.dist-info → py_neuromodulation-0.0.3.dist-info}/LICENSE +0 -0
@@ -0,0 +1,188 @@
1
+ docs/build/_downloads/09df217f95985497f45d69e2d4bdc5b1/plot_2_example_add_feature.py,sha256=lMwnMXL9HlCrL6JZf1UtRtLM2YrW1quZo2rtDH5Pg0k,2332
2
+ docs/build/_downloads/3b4900a2b2818ff30362215b76f7d5eb/plot_1_example_BIDS.py,sha256=v1DmUQmA_99F0_WpLnPLXM5B7mV0RNi1HoYIj3E_yH8,6908
3
+ docs/build/_downloads/7e92dd2e6cc86b239d14cafad972ae4f/plot_3_example_sharpwave_analysis.py,sha256=p66dwewIyX_gx4CAHtBh0qJy55QaLL95WGjXoS5Wwis,9620
4
+ docs/build/_downloads/c2db0bf2b334d541b00662b991682256/plot_6_real_time_demo.py,sha256=bTHUteIHgZKbb43u3Y06Spx4YnZs4O3MuDX5m5CfBK8,4847
5
+ docs/build/_downloads/ce3914826f782cbd1ea8fd024eaf0ac3/plot_5_example_rmap_computing.py,sha256=VWp8b7SUgkmGeLUpeIbAJCE5QkVVqSr-1_IX4QIWeqM,2844
6
+ docs/build/_downloads/da36848a41e6a3235d91fb7cfb6d59b4/plot_0_first_demo.py,sha256=G6cj82Z9meuh-SQ-U6h_TMsJCjdDUfIV076w5x_BSrI,7687
7
+ docs/build/_downloads/eaa4305c75b19a1e2eea941f742a6331/plot_4_example_gridPointProjection.py,sha256=AyVMbn7KPdI6TpUHxiUChCMH7HRTCvOp70b2E8OA4Is,8105
8
+ docs/build/html/_downloads/09df217f95985497f45d69e2d4bdc5b1/plot_2_example_add_feature.py,sha256=lMwnMXL9HlCrL6JZf1UtRtLM2YrW1quZo2rtDH5Pg0k,2332
9
+ docs/build/html/_downloads/3b4900a2b2818ff30362215b76f7d5eb/plot_1_example_BIDS.py,sha256=d_AFxEqezYCjTP7-34508qzQ8u53g_2gyuV2jW4ac_o,6937
10
+ docs/build/html/_downloads/7e92dd2e6cc86b239d14cafad972ae4f/plot_3_example_sharpwave_analysis.py,sha256=p66dwewIyX_gx4CAHtBh0qJy55QaLL95WGjXoS5Wwis,9620
11
+ docs/build/html/_downloads/c2db0bf2b334d541b00662b991682256/plot_6_real_time_demo.py,sha256=bTHUteIHgZKbb43u3Y06Spx4YnZs4O3MuDX5m5CfBK8,4847
12
+ docs/build/html/_downloads/ce3914826f782cbd1ea8fd024eaf0ac3/plot_5_example_rmap_computing.py,sha256=VWp8b7SUgkmGeLUpeIbAJCE5QkVVqSr-1_IX4QIWeqM,2844
13
+ docs/build/html/_downloads/da36848a41e6a3235d91fb7cfb6d59b4/plot_0_first_demo.py,sha256=G6cj82Z9meuh-SQ-U6h_TMsJCjdDUfIV076w5x_BSrI,7687
14
+ docs/build/html/_downloads/eaa4305c75b19a1e2eea941f742a6331/plot_4_example_gridPointProjection.py,sha256=AyVMbn7KPdI6TpUHxiUChCMH7HRTCvOp70b2E8OA4Is,8105
15
+ docs/source/conf.py,sha256=-10zCfbUXqpeYqZKS8WEGiN2kLXYu9W5bwHmaKperfM,3109
16
+ docs/source/_build/html/_downloads/09df217f95985497f45d69e2d4bdc5b1/plot_2_example_add_feature.py,sha256=GE9isYmHf8PmGQGYTsJakE0F3yMdoISnEjuW8z6h_aw,2353
17
+ docs/source/_build/html/_downloads/0d0d0a76e8f648d5d3cbc47da6351932/plot_real_time_demo.py,sha256=bTHUteIHgZKbb43u3Y06Spx4YnZs4O3MuDX5m5CfBK8,4847
18
+ docs/source/_build/html/_downloads/3b4900a2b2818ff30362215b76f7d5eb/plot_1_example_BIDS.py,sha256=Q8ASUBssHg6fd28dTRcRTmyaVxdWnhevngxIb8YsYbk,6967
19
+ docs/source/_build/html/_downloads/5d73cadc59a8805c47e3b84063afc157/plot_example_BIDS.py,sha256=QTntcJmIe67-zMgJ6J45GAgmSXb0KE202PzgJPKuNc0,6901
20
+ docs/source/_build/html/_downloads/7660317fa5a6bfbd12fcca9961457fc4/plot_example_rmap_computing.py,sha256=3_ZUJQHY0eH0NrmZsGvg403KmJvKqnSpLAABxdG_1xU,2859
21
+ docs/source/_build/html/_downloads/7e92dd2e6cc86b239d14cafad972ae4f/plot_3_example_sharpwave_analysis.py,sha256=p66dwewIyX_gx4CAHtBh0qJy55QaLL95WGjXoS5Wwis,9620
22
+ docs/source/_build/html/_downloads/839e5b319379f7fd9e867deb00fd797f/plot_example_gridPointProjection.py,sha256=AyVMbn7KPdI6TpUHxiUChCMH7HRTCvOp70b2E8OA4Is,8105
23
+ docs/source/_build/html/_downloads/ae8be19afe5e559f011fc9b138968ba0/plot_first_demo.py,sha256=G6cj82Z9meuh-SQ-U6h_TMsJCjdDUfIV076w5x_BSrI,7687
24
+ docs/source/_build/html/_downloads/b8b06cacc17969d3725a0b6f1d7741c5/plot_example_sharpwave_analysis.py,sha256=DB9mGoliri-nvQGMfQmZo5DrnZLsYM7faE0oso-Hp_M,9640
25
+ docs/source/_build/html/_downloads/c2db0bf2b334d541b00662b991682256/plot_6_real_time_demo.py,sha256=QubNW2mbJ-HXDLx24Jd2oCykrlwHEaPt7mOuh5CHcbA,4938
26
+ docs/source/_build/html/_downloads/c31a86c0b68cb4167d968091ace8080d/plot_example_add_feature.py,sha256=lMwnMXL9HlCrL6JZf1UtRtLM2YrW1quZo2rtDH5Pg0k,2332
27
+ docs/source/_build/html/_downloads/ce3914826f782cbd1ea8fd024eaf0ac3/plot_5_example_rmap_computing.py,sha256=VWp8b7SUgkmGeLUpeIbAJCE5QkVVqSr-1_IX4QIWeqM,2844
28
+ docs/source/_build/html/_downloads/da36848a41e6a3235d91fb7cfb6d59b4/plot_0_first_demo.py,sha256=NJHXQ2x4bZmLEFimo0hM13oWrAcA_pd8Dr3NL7v5Zc8,7650
29
+ docs/source/_build/html/_downloads/eaa4305c75b19a1e2eea941f742a6331/plot_4_example_gridPointProjection.py,sha256=AyVMbn7KPdI6TpUHxiUChCMH7HRTCvOp70b2E8OA4Is,8105
30
+ docs/source/auto_examples/plot_0_first_demo.py,sha256=NJHXQ2x4bZmLEFimo0hM13oWrAcA_pd8Dr3NL7v5Zc8,7650
31
+ docs/source/auto_examples/plot_1_example_BIDS.py,sha256=Q8ASUBssHg6fd28dTRcRTmyaVxdWnhevngxIb8YsYbk,6967
32
+ docs/source/auto_examples/plot_2_example_add_feature.py,sha256=GE9isYmHf8PmGQGYTsJakE0F3yMdoISnEjuW8z6h_aw,2353
33
+ docs/source/auto_examples/plot_3_example_sharpwave_analysis.py,sha256=p66dwewIyX_gx4CAHtBh0qJy55QaLL95WGjXoS5Wwis,9620
34
+ docs/source/auto_examples/plot_4_example_gridPointProjection.py,sha256=AyVMbn7KPdI6TpUHxiUChCMH7HRTCvOp70b2E8OA4Is,8105
35
+ docs/source/auto_examples/plot_5_example_rmap_computing.py,sha256=VWp8b7SUgkmGeLUpeIbAJCE5QkVVqSr-1_IX4QIWeqM,2844
36
+ docs/source/auto_examples/plot_6_real_time_demo.py,sha256=QubNW2mbJ-HXDLx24Jd2oCykrlwHEaPt7mOuh5CHcbA,4938
37
+ examples/plot_0_first_demo.py,sha256=NJHXQ2x4bZmLEFimo0hM13oWrAcA_pd8Dr3NL7v5Zc8,7650
38
+ examples/plot_1_example_BIDS.py,sha256=Q8ASUBssHg6fd28dTRcRTmyaVxdWnhevngxIb8YsYbk,6967
39
+ examples/plot_2_example_add_feature.py,sha256=GE9isYmHf8PmGQGYTsJakE0F3yMdoISnEjuW8z6h_aw,2353
40
+ examples/plot_3_example_sharpwave_analysis.py,sha256=p66dwewIyX_gx4CAHtBh0qJy55QaLL95WGjXoS5Wwis,9620
41
+ examples/plot_4_example_gridPointProjection.py,sha256=AyVMbn7KPdI6TpUHxiUChCMH7HRTCvOp70b2E8OA4Is,8105
42
+ examples/plot_5_example_rmap_computing.py,sha256=VWp8b7SUgkmGeLUpeIbAJCE5QkVVqSr-1_IX4QIWeqM,2844
43
+ examples/plot_6_real_time_demo.py,sha256=QubNW2mbJ-HXDLx24Jd2oCykrlwHEaPt7mOuh5CHcbA,4938
44
+ packages/realtime_decoding/build/lib/realtime_decoding/__init__.py,sha256=ASzcT8ktbukMQ3T9PPoVAlcazknE-ACVFOuNw24rMPo,127
45
+ packages/realtime_decoding/build/lib/realtime_decoding/decoder.py,sha256=Sff2JWYCF2vFNEGtaReUrNX5LntV9wrbcg8tC1pozGA,3229
46
+ packages/realtime_decoding/build/lib/realtime_decoding/features.py,sha256=ZWLngSWuenXLaH-ks19fTUaqwMPA-MUB8-UNTQgmi-g,6021
47
+ packages/realtime_decoding/build/lib/realtime_decoding/helpers.py,sha256=nQFtybuvXpM7xDzfCWtw23pyQoGMJIDeZOMGd7KkK_U,337
48
+ packages/realtime_decoding/build/lib/realtime_decoding/run_decoding.py,sha256=ieKS134CxfZcL0yOh3Bvl8rKp4Bfu4s6SCohXx52bkI,11950
49
+ packages/realtime_decoding/build/lib/realtime_decoding/trainer.py,sha256=ICBnm4Up3K8a0ovaMGPFDNr8Y5vwLKVrI2knzvXrfxE,1536
50
+ packages/tmsi/build/lib/__init__.py,sha256=OFqnFN-GHeicZgsQx7-QtQIc7f8p3tOZSdxgu8DdbCg,145
51
+ packages/tmsi/build/lib/TMSiFileFormats/__init__.py,sha256=WTGDqaSJvjiX6lDZz7TC7FcNfgeE_WTxTiPesdKCDC4,1076
52
+ packages/tmsi/build/lib/TMSiFileFormats/file_writer.py,sha256=uvfh2TXmbrKo1jmfqFS_0KATL5GPKqzxdO08uvEUbvA,3482
53
+ packages/tmsi/build/lib/TMSiFileFormats/file_formats/__init__.py,sha256=QX-f7vQApRPyIlmmcjmhOPc4NkBcB_b4qrNNUKNQUHA,1136
54
+ packages/tmsi/build/lib/TMSiFileFormats/file_formats/lsl_stream_writer.py,sha256=SBD62cZmKSVacbPAkXqVyipZfx4-lCHwAPE5LymqRUM,6987
55
+ packages/tmsi/build/lib/TMSiFileFormats/file_formats/poly5_file_writer.py,sha256=2zI-zLr4w8XAkv0vjaNdRSLbSR3tNqmidXbCLS4_kh8,17298
56
+ packages/tmsi/build/lib/TMSiFileFormats/file_formats/poly5_to_edf_converter.py,sha256=anFbDwrBtc1RzkV4s1oW5vYf0oLN4nZE_--xZP2NU10,9221
57
+ packages/tmsi/build/lib/TMSiFileFormats/file_formats/xdf_file_writer.py,sha256=LLVRA_70gfMgou4hiT3v8IZ88LIYosMZ30BxsGCEWlo,39017
58
+ packages/tmsi/build/lib/TMSiFileFormats/file_readers/__init__.py,sha256=VmWAbvOR5bejE_Y69kJx-WngMeOXXu41fHgfuPR_fKY,1060
59
+ packages/tmsi/build/lib/TMSiFileFormats/file_readers/edf_reader.py,sha256=UylKmzea11Mq3RKfuXXbN5g1OkvCj96BdOocGb1r-XY,4090
60
+ packages/tmsi/build/lib/TMSiFileFormats/file_readers/poly5reader.py,sha256=2vGY1wxdd-9cFWBnEITKyn1dZ49dToP3LFs6SsPoX_4,10297
61
+ packages/tmsi/build/lib/TMSiFileFormats/file_readers/xdf_reader.py,sha256=bSrzvqaysfegtFOkYgmNora49lJyXQUNIeqz5-cluSM,8579
62
+ packages/tmsi/build/lib/TMSiPlotters/__init__.py,sha256=PGUQlRcrWFlpe7y7ld1yY26LAFt1Rhwc7xB9C7_OHhk,43
63
+ packages/tmsi/build/lib/TMSiPlotters/gui/__init__.py,sha256=R0nvhP4z9rspQWIIo-DqAdAt1pWU0s6wDeZFZgeC7uk,1219
64
+ packages/tmsi/build/lib/TMSiPlotters/gui/_plotter_gui.py,sha256=XXWoJXeI6nwg2O450taa5eXlKcxZgwyVdPhMoPyvUHk,10981
65
+ packages/tmsi/build/lib/TMSiPlotters/gui/plotting_gui.py,sha256=xgf2a1J9KEwdcs5wDIOHz3OBcXD9yneONlMCLX-RGN4,21679
66
+ packages/tmsi/build/lib/TMSiPlotters/plotters/__init__.py,sha256=yH_xWZGRUwUuPoVlE71KEkpH5aV15of92Um_X4uxTp8,1318
67
+ packages/tmsi/build/lib/TMSiPlotters/plotters/hd_emg_plotter.py,sha256=nJehvy5inr2Xf4pNP2X1FMFivTa3Hj7d3S8ldd6_HpM,20868
68
+ packages/tmsi/build/lib/TMSiPlotters/plotters/impedance_plotter.py,sha256=gMr4aebPmkqrlwxB_jNL-gkPTQmYGg0gvw-tZoG5JkI,28170
69
+ packages/tmsi/build/lib/TMSiPlotters/plotters/signal_plotter.py,sha256=Ek2BpdwqwQb8pIhRbafEATYwphRI6LDs6cV2qpzi7I4,56052
70
+ packages/tmsi/build/lib/TMSiSDK/__init__.py,sha256=ofaDxFC1LWaTBKOxSEhsG8TeSuby56vJP2s2MEUSpYE,1637
71
+ packages/tmsi/build/lib/TMSiSDK/device.py,sha256=8z00HY9GNiYBdugiPd8ctcLlGniWPLEtzEy7p4tM01Y,18540
72
+ packages/tmsi/build/lib/TMSiSDK/error.py,sha256=W2uMpRReYlRMw6jv7bVeAuK0GJLBe8I-gvs0I8DrDoQ,3969
73
+ packages/tmsi/build/lib/TMSiSDK/sample_data.py,sha256=ujSmF0xljVuFn71ls7A6XxWevheR3ux-ym9lx7qIHWE,2078
74
+ packages/tmsi/build/lib/TMSiSDK/sample_data_server.py,sha256=AQTC9Yk-ZISbISBqJWLrQRXNGAAQArKA32hP2fDnVu4,3179
75
+ packages/tmsi/build/lib/TMSiSDK/settings.py,sha256=f9wD8eTG4uSbudSSQ2dF0P9Ldset24qeD4F8vAcBjHQ,1303
76
+ packages/tmsi/build/lib/TMSiSDK/tmsi_device.py,sha256=g8PKBMDpCbdQ7lD-a0te1ovdhx_0Zr2WSjiHuYxG9XA,3872
77
+ packages/tmsi/build/lib/TMSiSDK/devices/__init__.py,sha256=qKBSReRCR9RP5iIprQ-2yR16c0C66PaQdhF_dLdLHhE,987
78
+ packages/tmsi/build/lib/TMSiSDK/devices/saga/TMSi_Device_API.py,sha256=lZxyMA-YKWaqVAHikBbL50a3gRJkAYEIoTyh1DM_tsc,64350
79
+ packages/tmsi/build/lib/TMSiSDK/devices/saga/__init__.py,sha256=hesQE4rGyBn_EIzk0V9OPzrvd82gVf8W4Qg9GZPMGv8,1104
80
+ packages/tmsi/build/lib/TMSiSDK/devices/saga/saga_device.py,sha256=f7xayd5xEjjetPOde2B8LAHCHIML0tHE7lI9hrlxpUE,56014
81
+ packages/tmsi/build/lib/TMSiSDK/devices/saga/saga_types.py,sha256=9AW78NbGVv7y3AOSubvK3-TEQcEu6iYGUqAw6U8Q4V0,19323
82
+ packages/tmsi/build/lib/TMSiSDK/devices/saga/xml_saga_config.py,sha256=AoRAyQa2duNd2OTpN1xUS2ohjWYJcknPkAtlzkQHk6A,5811
83
+ packages/tmsi/build/lib/apex_sdk/__init__.py,sha256=2HeK5m-t17JTkImtGgzxbKW_NTlcUM2VzftdvqP_VvY,1029
84
+ packages/tmsi/build/lib/apex_sdk/tmsi_sdk.py,sha256=KmOAer7XO2JihagQB3fUVNr6RDezPIMcYffm4UxawQc,4208
85
+ packages/tmsi/build/lib/apex_sdk/device/__init__.py,sha256=1J0v2m1dpzB6Z01bwzK_WKCM3y7lInB8UdPxQp08-hk,1317
86
+ packages/tmsi/build/lib/apex_sdk/device/tmsi_channel.py,sha256=21WC_lo24kWJDOp-6Mg0mbKLGQcPOsDfyRZSJfjDNWE,2349
87
+ packages/tmsi/build/lib/apex_sdk/device/tmsi_device.py,sha256=bueUoq5xDnZqk64CPivViBG_OddL0aBr7QZLWaYaJCk,7904
88
+ packages/tmsi/build/lib/apex_sdk/device/tmsi_device_enums.py,sha256=ISm_Sgc8NlB5kZc4CLdvDRlnz7J0-SyAIKHzSy4sgmU,2182
89
+ packages/tmsi/build/lib/apex_sdk/device/tmsi_dongle.py,sha256=tS7s8EyS4T4ES2D0c_LxGI8tmQLufKPWW-XPdoBr5RE,1207
90
+ packages/tmsi/build/lib/apex_sdk/device/tmsi_event_reader.py,sha256=ChICOlqMV4g2cepKKakU4nYj6tOcxXFPlPMRLKw03a0,1475
91
+ packages/tmsi/build/lib/apex_sdk/device/tmsi_measurement.py,sha256=aklYuP8JujBPBU8FcoBb63zU2lSRdbd8ewpr5JqIoR0,3996
92
+ packages/tmsi/build/lib/apex_sdk/device/devices/apex/apex_API.py,sha256=ltOEnPy1PI0oKWOEbvPZP1CqRuHbOjaF__9VVm0xNz0,39789
93
+ packages/tmsi/build/lib/apex_sdk/device/devices/apex/apex_API_enums.py,sha256=t_w8e-P9Pzex_XGWiOoLVt-aAWcmkTgyEkeKtAChMBw,6480
94
+ packages/tmsi/build/lib/apex_sdk/device/devices/apex/apex_API_structures.py,sha256=UQv1xK3mIVnxzNjh0Kq1pLnKFvUf-HdA4KTIx8pgjcU,19330
95
+ packages/tmsi/build/lib/apex_sdk/device/devices/apex/apex_device.py,sha256=98M7INyQnb688AhfZn12yjCcl430ouWpSMVY7SY8cc0,66903
96
+ packages/tmsi/build/lib/apex_sdk/device/devices/apex/apex_dongle.py,sha256=uu3Pw6isEim73L5p9-UcPZMXrl3dM6sQkWYx7c9Bvo8,1094
97
+ packages/tmsi/build/lib/apex_sdk/device/devices/apex/apex_event_reader.py,sha256=ks6i5ZRb6AA0g6iT0jhVQdwBY5rR3SoiNGpS89nDOD4,1847
98
+ packages/tmsi/build/lib/apex_sdk/device/devices/apex/apex_structures/apex_channel.py,sha256=koUs_9rMsgXLh5482jeTjSRSOZjpaD556RbqXm2I074,1479
99
+ packages/tmsi/build/lib/apex_sdk/device/devices/apex/apex_structures/apex_config.py,sha256=s7gvjnV3ZTUPzZC8wctWGbzrYV0OFmy3Ye85yDkmf7Y,5607
100
+ packages/tmsi/build/lib/apex_sdk/device/devices/apex/apex_structures/apex_const.py,sha256=Kh0tyxtjb8wge8JllgFI69vOR04IRTw5OzaYaTg714E,1000
101
+ packages/tmsi/build/lib/apex_sdk/device/devices/apex/apex_structures/apex_impedance_channel.py,sha256=ERbbvaH2SoqOSYnotfUygUv_u5pb7zibQkSfrVmPNd8,1616
102
+ packages/tmsi/build/lib/apex_sdk/device/devices/apex/apex_structures/apex_info.py,sha256=bO0cyarC52Hj5DVwFDyjAxEPxxK7V16nTDeO-Ln-90U,3280
103
+ packages/tmsi/build/lib/apex_sdk/device/devices/apex/apex_structures/dongle_info.py,sha256=QMqVPsgPiHgBKWtpzVCOQvHuJdN3rs_K_g9yINbde54,1123
104
+ packages/tmsi/build/lib/apex_sdk/device/devices/apex/measurements/download_measurement.py,sha256=WqeJk_V8yRj6SSU7DDyD6XGrw5gk8nnDOfXUldYGAl4,2628
105
+ packages/tmsi/build/lib/apex_sdk/device/devices/apex/measurements/eeg_measurement.py,sha256=n8tIuF7KxvMj8r2SHrzoc80W8m2ahrUqFhBR6ufkI9g,6110
106
+ packages/tmsi/build/lib/apex_sdk/device/devices/apex/measurements/impedance_measurement.py,sha256=GMu1Rda8PE-RDVisohKsAgbIXvGTgareDN6SAUy2jhI,5040
107
+ packages/tmsi/build/lib/apex_sdk/device/threads/conversion_thread.py,sha256=oPHKoOllOzrzzonNr96MLIMTK0EbFqUvTW5oxDEtjp8,1604
108
+ packages/tmsi/build/lib/apex_sdk/device/threads/sampling_thread.py,sha256=wgwO3piD9grcoo6aTsIt8W9NsqWFhpLIouYg6gfqX3s,1565
109
+ packages/tmsi/build/lib/apex_sdk/sample_data_server/__init__.py,sha256=6Di1HJjx6OgxS75GsVn6ILRCBHlV1JW4lSc2cq4dpDY,986
110
+ packages/tmsi/build/lib/apex_sdk/sample_data_server/event_data.py,sha256=XOTzgnAW_IVEu0XtqjApLv7PWamne-I0lZRQA-3cunQ,1180
111
+ packages/tmsi/build/lib/apex_sdk/sample_data_server/sample_data.py,sha256=FNuqQqdZDfTAZF3jP25rFsnnq3R7MiktiGCuHYJrLfI,1416
112
+ packages/tmsi/build/lib/apex_sdk/sample_data_server/sample_data_server.py,sha256=Yap6iqoJ7Opb6BFdK22CTreifXYGch5Ojx4Uig-Juog,4816
113
+ packages/tmsi/build/lib/apex_sdk/tmsi_errors/error.py,sha256=p0_VEr9W-sQ07b5KE5YFGkkr4jV0GBSRoBsMuaZi2Qg,5047
114
+ packages/tmsi/build/lib/apex_sdk/tmsi_utilities/decorators.py,sha256=ce2M6Fr4YKvKcRicTCQuBUYVnfy5Z-Wf1aw33LpZP3U,1782
115
+ packages/tmsi/build/lib/apex_sdk/tmsi_utilities/logger_filter.py,sha256=Xw1Vsf-aRyCwPG4W38V8IoTIiofmRGn7ARuS6JOurDw,1150
116
+ packages/tmsi/build/lib/apex_sdk/tmsi_utilities/singleton.py,sha256=rotFF0Hh97tMN68gHm702yOuGscue3Qs73nu8N9ccko,1196
117
+ packages/tmsi/build/lib/apex_sdk/tmsi_utilities/support_functions.py,sha256=ysuvPQejAIW3NFcb2XhC7qTWqFfSac_wXUULbTyrATQ,1949
118
+ packages/tmsi/build/lib/apex_sdk/tmsi_utilities/tmsi_logger.py,sha256=vqcGHCg-bmKjlggFv_4j2q1TRjQIkIaHQ1tT6GqAdyw,3459
119
+ packages/tmsi/build/lib/apex_sdk/tmsi_utilities/apex/apex_structure_generator.py,sha256=aPpLmeYXtoMGNUGEGunF6gtk7Z6Q4UYPHixEm29s8MA,5414
120
+ py_neuromodulation/FieldTrip.py,sha256=cq4BIibMvcpyAHd7U8eEK4AhVSOTrRKXcywtgtc-Mg4,18597
121
+ py_neuromodulation/__init__.py,sha256=3aujkEqF4dzt8WKtK7gaolh782UsR5FFkqcg7fOtze4,296
122
+ py_neuromodulation/_write_example_dataset_helper.py,sha256=b-kG1JiuIhebVSNCrumTOgdXPTmxXkkduCpUFlmMlOg,2530
123
+ py_neuromodulation/nm_EpochStream.py,sha256=fqLNIQRVtcQOMtOyw-omu3KegEs6tWxZI-GQWqdAeG0,2595
124
+ py_neuromodulation/nm_IO.py,sha256=SFOsCMwu2XOYUjFaDauciVkZsq0YG-Vx4rrevqNDd4g,11688
125
+ py_neuromodulation/nm_RMAP.py,sha256=2wHHD9gwW6Y3XZnGUwmDrWHcz7HjwwLqcwwSjADA0-Q,15791
126
+ py_neuromodulation/nm_across_patient_decoding.py,sha256=9Mwu5o5cUAbtSP8BTx4c-BJfJZtk8wsMx_WH0VIegdI,38690
127
+ py_neuromodulation/nm_analysis.py,sha256=ZIuc1cqG5_2DvoTwvSDL88nyYa_XglANq90xUqeSEXM,38528
128
+ py_neuromodulation/nm_artifacts.py,sha256=KZZ68Q13P64vp05vRiLZ9CPmyWurhcB6K0ldY91axCI,692
129
+ py_neuromodulation/nm_bispectra.py,sha256=7XduXwvryckEMlNeRqKLioNK90rW8AZpvA_Z2I7gThI,6322
130
+ py_neuromodulation/nm_bursts.py,sha256=2xMJjluXttjeijm9e7EaaJJ2fcnnX1kLb600TiJvCzY,7710
131
+ py_neuromodulation/nm_coherence.py,sha256=Iy8FtYBb7qaRFGpzHwOK_IA6O4bvtrumcIyS_Umh0aY,7435
132
+ py_neuromodulation/nm_cohortwrapper.py,sha256=eJVCBW745DB5MX7OBVJh2ZAT1vy-3-_2MCHnjrsO9qI,16643
133
+ py_neuromodulation/nm_decode.py,sha256=d15D-l0RUAcW8FfXyDcPaNwRpS9wuq1XK-pWmImPHDg,35645
134
+ py_neuromodulation/nm_define_nmchannels.py,sha256=8rjZoDIwhsIgdqfSxScaJvY9tNGWNLecTLxEmvhHMuE,11074
135
+ py_neuromodulation/nm_eval_timing.py,sha256=JcnLYyxjH8hvNX7rbJ4PEj-NZzqs2NMGOhyuQQuGiYc,8800
136
+ py_neuromodulation/nm_features.py,sha256=IsfN6nFE_f0OPFaHPjFhjPxMO7pKc6pxkylt6V09LEk,3527
137
+ py_neuromodulation/nm_features_abc.py,sha256=6CX8NHbtpGDY-l9K4CUomlRJVZHPmo6KHJX4RJ1YolM,917
138
+ py_neuromodulation/nm_filter.py,sha256=dusgRby4xDxrj62uINuucm0juCwpGb7Lr3iN4IOs8R4,7542
139
+ py_neuromodulation/nm_filter_preprocessing.py,sha256=rR1QKaf9q_7sWB5J129rBTz5H2PO6rvGxMmU86-npi4,3366
140
+ py_neuromodulation/nm_fooof.py,sha256=rOpKyKzTTnMWBplujsw5kzHAvILBGuCjP0q0UozTIiM,6147
141
+ py_neuromodulation/nm_generator.py,sha256=YPa-1X5gCUVSpxTT9upbbY4kjqoVlRd5njQHBjgpAgk,1088
142
+ py_neuromodulation/nm_hjorth_raw.py,sha256=EvXOBr3k9Q5xypv1Gj8GFqa5EJ_wRYNDGgGnXCUekiM,2180
143
+ py_neuromodulation/nm_kalmanfilter.py,sha256=dgs7_XMBpLEE49l6aAVNA4d6ovTS63CZsAI472eG3JA,2006
144
+ py_neuromodulation/nm_linelength.py,sha256=0iZO7j6g7IeprvlEvWG6a_CaUL2p0sQKGiFgDrzYtxk,954
145
+ py_neuromodulation/nm_mne_connectivity.py,sha256=UCgLRQSrzl0OpOhHdUc1iqWr6fPiHZeU0zNeZfaplJE,3907
146
+ py_neuromodulation/nm_nolds.py,sha256=KZr3ZKqvKJkYKh2BMYuuUMkP8hhmJTUgtLZrE8l-DqQ,3660
147
+ py_neuromodulation/nm_normalization.py,sha256=9v3fiNT0HexD9ycp2gB6BPp_ch86kYez_YNI9yB3zGw,7574
148
+ py_neuromodulation/nm_oscillatory.py,sha256=dvxiytWXwd9_gsvroUhDQkQZBTIZzQEhl2XS2QzmOIQ,16476
149
+ py_neuromodulation/nm_plots.py,sha256=B5A91ejZwoxx2YRa3fB6G_fNamdCm27JSOInqF1OfWc,17869
150
+ py_neuromodulation/nm_projection.py,sha256=g8VersyOGiWj3PjR_U6dvLttsp6CHi_GCyYnu_ha8uc,15309
151
+ py_neuromodulation/nm_rereference.py,sha256=SApVkeWdMmMfD1sr77HSs7MW3eQwVHKEhfm-0zyBu9M,3381
152
+ py_neuromodulation/nm_resample.py,sha256=MSMu8gvmrYZ194fAVJdlB_4yEkuGKHgHrLd11zBDRY0,1122
153
+ py_neuromodulation/nm_run_analysis.py,sha256=kZKcVkAbeAhKzoXyFaNK4Vo_aJTTSAVZxxr8y3GMyCc,15046
154
+ py_neuromodulation/nm_settings.py,sha256=7d17vwSGrABxQJ7C6x3FqP8kdboUFpm5LrN4djoVlFA,1775
155
+ py_neuromodulation/nm_sharpwaves.py,sha256=mk6DYjO-834aCEk9-x24DP6b1rSA9gC1Jf6in8GPAgA,16891
156
+ py_neuromodulation/nm_stats.py,sha256=wgYk3jzrfSNEZEWdPSpxQcGcsdNs-vhfKvRhMptSbXM,16029
157
+ py_neuromodulation/nm_stream_abc.py,sha256=hQHFVOnCdZiVfq9NyS5npFQ4DFqJUsY4jbaegEhMvgk,7755
158
+ py_neuromodulation/nm_stream_offline.py,sha256=OCXUCgVzbXKnmyWJ8aeMBFFuoWwZozQEBxygaSzCkts,12366
159
+ py_neuromodulation/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
160
+ py_neuromodulation/utils/_logging.py,sha256=vADt0XAWSzDAvhuOfaOjyZRSZCA11Pym2wi0uvPIoTo,738
161
+ tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
162
+ tests/conftest.py,sha256=u4p-GjX85YVITrUYxH35ZqKdjLWqMZQZm3J29OtjEYw,3107
163
+ tests/test_all_examples.py,sha256=t9DulIlDkhjSXw9oZ4B-CChB1Q3_V48fFUOaOowA1RE,285
164
+ tests/test_all_features.py,sha256=KyfR3HMxVUkuBibVp8lnnhG29aOiSO0gvY91wt2QUpo,1708
165
+ tests/test_bispectra.py,sha256=5llgbiDmYzxlUCvrmjPP5SYUcpLgASiiGOcrXI-IR4U,1599
166
+ tests/test_bursts.py,sha256=NRkG8AutSfgZlNBTriSWuiBGdktoVZKrV9VJgcCMULc,2806
167
+ tests/test_feature_sampling_rates.py,sha256=IJM_vQ9ykrInXGg1EyThaBu6WdquIVYxSFgy5hPDtsg,4377
168
+ tests/test_fooof.py,sha256=oOY9O44Icj4tDhG8G_QtTMcy24RgN7JP7nKZeAR2RBM,601
169
+ tests/test_initalization_offline_stream.py,sha256=iWr5xu6m5TfD-_EpK3Tk_OXAPKb97XOYdK_p5WJt0w8,1326
170
+ tests/test_multiprocessing.py,sha256=uuJZDPEAN_WriXB7boHU-Pukf88Oj9xokwNk1e8uglY,2020
171
+ tests/test_nan_values.py,sha256=-rVU4XyaTufAKu1lywiaHjpqeqAV2lRDbimYm-C5-7w,808
172
+ tests/test_nm_filter.py,sha256=tLyP8kV5On4BrkO5hC4GSYFmV_w9JYJ19WxdkEGjC5s,3050
173
+ tests/test_nm_resample.py,sha256=0MD_X5fbztOEqYG6NbR_0yEV_ztH7BcyqRAyzbVrFM0,2104
174
+ tests/test_normalization_settings.py,sha256=_-KcFdsJOgThL_DtY9BCFmoDhZ70nT-Cjtxi369sPeE,3981
175
+ tests/test_notch_filter.py,sha256=CQbuqIn9MhTzvs4st2z4dXpxTGU2b2N3vTb71EW3S-A,987
176
+ tests/test_osc_features.py,sha256=UHPtlRr7WMyT5xrWBs4TJe793QRQJtk_iPqknfrw_F4,13046
177
+ tests/test_preprocessing_filter.py,sha256=_i6IrFJMhTBO7TuvDQgchRv7led1MXg7n6Rv4Kvdunk,5622
178
+ tests/test_rereference.py,sha256=Hrx8zwsNJDE2AEcaMpgSWEMmBmO-jRYOtfOeaPdKA3Q,5174
179
+ tests/test_sampling.py,sha256=63Eu5NZrExZI7UdnlFq9b3FA8n6KxhW-zkqlaL6bMTQ,2000
180
+ tests/test_settings_change_after_init.py,sha256=joG6_urbu941dmF-zo1JQstgjpVlM0wdRnKe-aMTd-M,2262
181
+ tests/test_sharpwave.py,sha256=lyzo8hWMO19sMccR-1vl5FGRajl7hVZXrM46uS8Sfyg,5588
182
+ tests/test_target_channel_add.py,sha256=N15l4vW9H73RveEx3irwcYmKQEvBk9Nzysblc-Z0KI8,3045
183
+ tests/test_timing.py,sha256=o2Sxbx9LMEpG6jIvU2kI1D1_AhoVuz3_nphWbSbRqZM,2592
184
+ py_neuromodulation-0.0.3.dist-info/LICENSE,sha256=V6yfss2JKJxeY-TsaEVqVomfd8ttziMyB9ik5L-BI7o,1139
185
+ py_neuromodulation-0.0.3.dist-info/METADATA,sha256=YSRxaxhxOF8Mq_1rO67M4I9TMx3ut2Olvd2B-5_y94c,7229
186
+ py_neuromodulation-0.0.3.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
187
+ py_neuromodulation-0.0.3.dist-info/top_level.txt,sha256=RAWmR9vjiJ8zRtHRd0SlX4FrBkrgSujkFEJI1wU6GlQ,48
188
+ py_neuromodulation-0.0.3.dist-info/RECORD,,
@@ -1,4 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: flit 3.9.0
2
+ Generator: bdist_wheel (0.43.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
+
@@ -0,0 +1,5 @@
1
+ docs
2
+ examples
3
+ packages
4
+ py_neuromodulation
5
+ tests
tests/__init__.py ADDED
File without changes
tests/conftest.py ADDED
@@ -0,0 +1,117 @@
1
+ import pytest
2
+ import numpy as np
3
+
4
+ from py_neuromodulation import (
5
+ nm_generator,
6
+ nm_stream_offline,
7
+ nm_settings,
8
+ nm_IO,
9
+ nm_define_nmchannels,
10
+ )
11
+
12
+
13
+ @pytest.fixture
14
+ def setup_default_stream_fast_compute():
15
+ """This test function sets a data batch and automatic initialized M1 datafram
16
+
17
+ Args:
18
+ PATH_PYNEUROMODULATION (string): Path to py_neuromodulation repository
19
+
20
+ Returns:
21
+ ieeg_batch (np.ndarray): (channels, samples)
22
+ df_M1 (pd Dataframe): auto intialized table for rereferencing
23
+ settings_wrapper (settings.py): settings.json
24
+ fs (float): example sampling frequency
25
+ """
26
+
27
+ (
28
+ RUN_NAME,
29
+ PATH_RUN,
30
+ PATH_BIDS,
31
+ PATH_OUT,
32
+ datatype,
33
+ ) = nm_IO.get_paths_example_data()
34
+
35
+ (
36
+ raw,
37
+ data,
38
+ sfreq,
39
+ line_noise,
40
+ coord_list,
41
+ coord_names,
42
+ ) = nm_IO.read_BIDS_data(
43
+ PATH_RUN=PATH_RUN, BIDS_PATH=PATH_BIDS, datatype=datatype
44
+ )
45
+
46
+ nm_channels = nm_define_nmchannels.set_channels(
47
+ ch_names=raw.ch_names,
48
+ ch_types=raw.get_channel_types(),
49
+ reference="default",
50
+ bads=raw.info["bads"],
51
+ new_names="default",
52
+ used_types=("ecog", "dbs", "seeg"),
53
+ target_keywords=("MOV_RIGHT_CLEAN",),
54
+ )
55
+
56
+ settings = nm_settings.get_default_settings()
57
+ settings = nm_settings.reset_settings(settings)
58
+ settings["fooof"]["aperiodic"]["exponent"] = True
59
+ settings["fooof"]["aperiodic"]["offset"] = True
60
+ settings["features"]["fooof"] = True
61
+
62
+ stream = nm_stream_offline.Stream(
63
+ settings=settings,
64
+ nm_channels=nm_channels,
65
+ path_grids=None,
66
+ verbose=True,
67
+ sfreq=sfreq,
68
+ line_noise=line_noise,
69
+ coord_list=coord_list,
70
+ coord_names=coord_names,
71
+ )
72
+
73
+ return data, stream
74
+
75
+
76
+ @pytest.fixture
77
+ def setup_databatch():
78
+ """This test function sets a data batch and automatic initialized M1 datafram
79
+
80
+ Args:
81
+ PATH_PYNEUROMODULATION (string): Path to py_neuromodulation repository
82
+
83
+ Returns:
84
+ ieeg_batch (np.ndarray): (channels, samples)
85
+ df_M1 (pd Dataframe): auto intialized table for rereferencing
86
+ settings_wrapper (settings.py): settings.json
87
+ fs (float): example sampling frequency
88
+ """
89
+
90
+ (
91
+ RUN_NAME,
92
+ PATH_RUN,
93
+ PATH_BIDS,
94
+ PATH_OUT,
95
+ datatype,
96
+ ) = nm_IO.get_paths_example_data()
97
+
98
+ (
99
+ raw,
100
+ data,
101
+ sfreq,
102
+ line_noise,
103
+ coord_list,
104
+ coord_names,
105
+ ) = nm_IO.read_BIDS_data(
106
+ PATH_RUN=PATH_RUN, BIDS_PATH=PATH_BIDS, datatype=datatype
107
+ )
108
+
109
+ settings = nm_settings.get_default_settings()
110
+ settings = nm_settings.set_settings_fast_compute(settings)
111
+
112
+ generator = nm_generator.raw_data_generator(
113
+ data, settings, int(np.floor(sfreq))
114
+ )
115
+ data_batch = next(generator, None)
116
+
117
+ return [raw.ch_names, raw.get_channel_types(), raw.info["bads"], data_batch]
@@ -0,0 +1,10 @@
1
+ from pathlib import Path
2
+ import pytest
3
+ import subprocess
4
+ import runpy
5
+
6
+
7
+ @pytest.mark.parametrize("example_filename", Path("examples").glob("*.py"))
8
+ def test_run_through_all_test(example_filename):
9
+ print(f"Running {example_filename}")
10
+ runpy.run_path(example_filename)
@@ -0,0 +1,63 @@
1
+ import numpy as np
2
+ import pandas as pd
3
+ import pytest
4
+
5
+ from py_neuromodulation import (
6
+ nm_settings,
7
+ nm_stream_offline,
8
+ nm_define_nmchannels,
9
+ nm_stream_abc,
10
+ )
11
+
12
+
13
+ def get_example_stream(test_arr: np.array) -> nm_stream_abc.PNStream:
14
+ settings = nm_settings.get_default_settings()
15
+ settings["features"]["raw_hjorth"] = True
16
+ settings["features"]["return_raw"] = True
17
+ settings["features"]["bandpass_filter"] = True
18
+ settings["features"]["stft"] = True
19
+ settings["features"]["fft"] = True
20
+ settings["features"]["sharpwave_analysis"] = True
21
+ settings["features"]["fooof"] = True
22
+ settings["features"]["bursts"] = True
23
+ settings["features"]["linelength"] = True
24
+ settings["features"]["nolds"] = False
25
+ settings["features"]["mne_connectivity"] = False
26
+ settings["features"]["coherence"] = False
27
+
28
+ nm_channels = nm_define_nmchannels.get_default_channels_from_data(test_arr)
29
+
30
+ stream = nm_stream_offline.Stream(
31
+ sfreq=1000, nm_channels=nm_channels, settings=settings, verbose=True
32
+ )
33
+ return stream
34
+
35
+
36
+ def test_all_features_random_array():
37
+ """This test runs's through all enabled features, and check's if they break
38
+ """
39
+ np.random.seed(0)
40
+ arr = np.random.random([2, 2000])
41
+ stream = get_example_stream(arr)
42
+
43
+ df = stream.run(arr)
44
+
45
+ assert df.shape[0] != 0 # terrible test
46
+
47
+
48
+ def test_all_features_zero_array():
49
+
50
+ arr = np.zeros([2, 2000])
51
+ stream = get_example_stream(arr)
52
+
53
+ df = stream.run(arr)
54
+
55
+
56
+ def test_all_features_NaN_array():
57
+
58
+ arr = np.empty([2, 2000])
59
+ arr[:] = np.nan
60
+
61
+ stream = get_example_stream(arr)
62
+
63
+ df = stream.run(arr)
@@ -0,0 +1,70 @@
1
+ import pytest
2
+ import mne
3
+ import numpy as np
4
+
5
+ from py_neuromodulation import (
6
+ nm_analysis,
7
+ nm_decode,
8
+ nm_define_nmchannels,
9
+ nm_IO,
10
+ nm_plots,
11
+ nm_settings,
12
+ nm_stream_offline,
13
+ )
14
+
15
+
16
+ def test_bispectrum():
17
+ (
18
+ RUN_NAME,
19
+ PATH_RUN,
20
+ PATH_BIDS,
21
+ PATH_OUT,
22
+ datatype,
23
+ ) = nm_IO.get_paths_example_data()
24
+
25
+ (
26
+ raw,
27
+ data,
28
+ sfreq,
29
+ line_noise,
30
+ coord_list,
31
+ coord_names,
32
+ ) = nm_IO.read_BIDS_data(
33
+ PATH_RUN=PATH_RUN, BIDS_PATH=PATH_BIDS, datatype=datatype
34
+ )
35
+
36
+ ch_names = raw.ch_names[4]
37
+ ch_types = raw.get_channel_types()[4]
38
+
39
+ nm_channels = nm_define_nmchannels.set_channels(
40
+ ch_names=[ch_names],
41
+ ch_types=[ch_types],
42
+ reference="default",
43
+ bads=None,
44
+ new_names="default",
45
+ used_types=("ecog", "dbs", "seeg"),
46
+ target_keywords=("MOV_RIGHT_CLEAN",),
47
+ )
48
+
49
+ settings = nm_settings.get_default_settings()
50
+ settings = nm_settings.reset_settings(settings)
51
+
52
+ settings["features"]["bispectrum"] = True
53
+
54
+ stream = nm_stream_offline.Stream(
55
+ settings=settings,
56
+ nm_channels=nm_channels,
57
+ path_grids=None,
58
+ verbose=True,
59
+ sfreq=sfreq,
60
+ line_noise=line_noise,
61
+ coord_list=coord_list,
62
+ coord_names=coord_names,
63
+ )
64
+
65
+ features = stream.run(np.expand_dims(data[3, :], axis=0))
66
+
67
+ assert (
68
+ features["ECOG_RIGHT_1_Bispectrum_phase_mean_whole_fband_range"].sum()
69
+ != 0
70
+ )
tests/test_bursts.py ADDED
@@ -0,0 +1,105 @@
1
+ import pytest
2
+ import numpy as np
3
+ from py_neuromodulation import (
4
+ nm_bursts,
5
+ nm_settings,
6
+ nm_stream_offline,
7
+ nm_define_nmchannels,
8
+ )
9
+
10
+
11
+ def test_init_wrong_fband():
12
+ settings = nm_settings.get_default_settings()
13
+ settings["burst_settings"]["frequency_bands"] = ["wrong_band"]
14
+ with pytest.raises(Exception):
15
+ nm_bursts.Burst.test_settings(
16
+ settings,
17
+ [
18
+ "ch1",
19
+ "ch2",
20
+ ],
21
+ 1000,
22
+ )
23
+
24
+
25
+ def test_init_wrong_treshold():
26
+ settings = nm_settings.get_default_settings()
27
+ settings["burst_settings"]["threshold"] = -1
28
+ with pytest.raises(Exception):
29
+ nm_bursts.Burst.test_settings(
30
+ settings,
31
+ [
32
+ "ch1",
33
+ "ch2",
34
+ ],
35
+ 1000,
36
+ )
37
+
38
+
39
+ def test_init_wrong_timeduration():
40
+ settings = nm_settings.get_default_settings()
41
+ settings["burst_settings"]["time_duration_s"] = -1
42
+ with pytest.raises(Exception):
43
+ nm_bursts.Burst.test_settings(
44
+ settings,
45
+ [
46
+ "ch1",
47
+ "ch2",
48
+ ],
49
+ 1000,
50
+ )
51
+
52
+
53
+ def test_init_wrong_burst_feature_init():
54
+ settings = nm_settings.get_default_settings()
55
+ settings["burst_settings"]["burst_features"]["duration"] = -1
56
+ with pytest.raises(Exception):
57
+ nm_bursts.Burst.test_settings(
58
+ settings,
59
+ [
60
+ "ch1",
61
+ "ch2",
62
+ ],
63
+ 1000,
64
+ )
65
+
66
+
67
+ def test_bursting_duration():
68
+ np.random.seed(0)
69
+ settings = nm_settings.get_default_settings()
70
+ settings["features"]["bursts"] = True
71
+ settings["postprocessing"]["feature_normalization"] = False
72
+ TIME_DURATION = 10
73
+ sfreq = 1000
74
+ NUM_CH = 1
75
+ time_points_beta = np.arange(0, 1, 1 / sfreq)
76
+ beta_freq = 18
77
+
78
+ beta_wave = np.sin(2 * np.pi * beta_freq * time_points_beta)
79
+
80
+ ch_names = ["ch0"]
81
+
82
+ bursts = nm_bursts.Burst(settings, ch_names, sfreq)
83
+
84
+ for _ in range(10):
85
+ np.random.seed(0)
86
+ data = np.random.random([NUM_CH, 1 * sfreq])
87
+ f = bursts.calc_feature(data, {})
88
+
89
+ np.random.seed(0)
90
+ # the percentile of the hilbert transform of a continuous oscillation will be high
91
+ # select better max amplitude
92
+ bursts = nm_bursts.Burst(settings, ch_names, sfreq)
93
+ f_burst = bursts.calc_feature(
94
+ beta_wave + np.random.random([NUM_CH, 1 * sfreq]), {}
95
+ )
96
+
97
+ assert (
98
+ f["ch0_bursts_low beta_amplitude_max"]
99
+ < f_burst["ch0_bursts_low beta_amplitude_max"]
100
+ )
101
+
102
+ assert (
103
+ f["ch0_bursts_low beta_duration_max"]
104
+ < f_burst["ch0_bursts_low beta_duration_max"]
105
+ )