py-neuromodulation 0.0.5__tar.gz → 0.0.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 (178) hide show
  1. py_neuromodulation-0.0.6/.github/workflows/docs_pages.yml +57 -0
  2. py_neuromodulation-0.0.6/.github/workflows/python-publish.yml +39 -0
  3. py_neuromodulation-0.0.6/.github/workflows/tests.yml +59 -0
  4. {py_neuromodulation-0.0.5 → py_neuromodulation-0.0.6}/PKG-INFO +3 -11
  5. py_neuromodulation-0.0.6/docs/Makefile +20 -0
  6. py_neuromodulation-0.0.6/docs/make.bat +35 -0
  7. py_neuromodulation-0.0.6/docs/source/_static/CEBRA_embedding.png +0 -0
  8. py_neuromodulation-0.0.6/docs/source/_static/RMAP_figure.png +0 -0
  9. py_neuromodulation-0.0.6/docs/source/_static/css/RMAP_figure.png +0 -0
  10. py_neuromodulation-0.0.6/docs/source/_static/css/project-template.css +16 -0
  11. py_neuromodulation-0.0.6/docs/source/_templates/custom-class-template.rst +7 -0
  12. py_neuromodulation-0.0.6/docs/source/_templates/custom-module-template.rst +67 -0
  13. py_neuromodulation-0.0.6/docs/source/api_documentation.rst +51 -0
  14. py_neuromodulation-0.0.6/docs/source/conf.py +95 -0
  15. py_neuromodulation-0.0.6/docs/source/contributing.rst +36 -0
  16. py_neuromodulation-0.0.6/docs/source/index.rst +66 -0
  17. py_neuromodulation-0.0.6/docs/source/installation.rst +46 -0
  18. py_neuromodulation-0.0.6/docs/source/nm_IO.rst +5 -0
  19. py_neuromodulation-0.0.6/docs/source/nm_RMAP.rst +5 -0
  20. py_neuromodulation-0.0.6/docs/source/nm_analysis.rst +5 -0
  21. py_neuromodulation-0.0.6/docs/source/nm_bursts.rst +5 -0
  22. py_neuromodulation-0.0.6/docs/source/nm_coherence.rst +5 -0
  23. py_neuromodulation-0.0.6/docs/source/nm_decode.rst +5 -0
  24. py_neuromodulation-0.0.6/docs/source/nm_define_nmchannels.rst +5 -0
  25. py_neuromodulation-0.0.6/docs/source/nm_features.rst +5 -0
  26. py_neuromodulation-0.0.6/docs/source/nm_filter.rst +5 -0
  27. py_neuromodulation-0.0.6/docs/source/nm_fooof.rst +5 -0
  28. py_neuromodulation-0.0.6/docs/source/nm_generator.rst +5 -0
  29. py_neuromodulation-0.0.6/docs/source/nm_hjorth.rst +5 -0
  30. py_neuromodulation-0.0.6/docs/source/nm_kalmanfilter.rst +5 -0
  31. py_neuromodulation-0.0.6/docs/source/nm_linelength.rst +5 -0
  32. py_neuromodulation-0.0.6/docs/source/nm_mne_connectivity.rst +5 -0
  33. py_neuromodulation-0.0.6/docs/source/nm_nolds.rst +5 -0
  34. py_neuromodulation-0.0.6/docs/source/nm_normalization.rst +5 -0
  35. py_neuromodulation-0.0.6/docs/source/nm_oscillatory.rst +11 -0
  36. py_neuromodulation-0.0.6/docs/source/nm_plots.rst +5 -0
  37. py_neuromodulation-0.0.6/docs/source/nm_projection.rst +5 -0
  38. py_neuromodulation-0.0.6/docs/source/nm_rereference.rst +5 -0
  39. py_neuromodulation-0.0.6/docs/source/nm_resample.rst +5 -0
  40. py_neuromodulation-0.0.6/docs/source/nm_run_analysis.rst +5 -0
  41. py_neuromodulation-0.0.6/docs/source/nm_settings.rst +5 -0
  42. py_neuromodulation-0.0.6/docs/source/nm_sharpwaves.rst +5 -0
  43. py_neuromodulation-0.0.6/docs/source/nm_stats.rst +5 -0
  44. py_neuromodulation-0.0.6/docs/source/nm_stream.rst +5 -0
  45. py_neuromodulation-0.0.6/docs/source/nm_stream_abc.rst +5 -0
  46. py_neuromodulation-0.0.6/docs/source/usage.rst +559 -0
  47. {py_neuromodulation-0.0.5 → py_neuromodulation-0.0.6}/examples/plot_2_example_add_feature.py +3 -3
  48. {py_neuromodulation-0.0.5 → py_neuromodulation-0.0.6}/examples/plot_3_example_sharpwave_analysis.py +10 -14
  49. {py_neuromodulation-0.0.5 → py_neuromodulation-0.0.6}/examples/plot_4_example_gridPointProjection.py +53 -55
  50. {py_neuromodulation-0.0.5 → py_neuromodulation-0.0.6}/examples/plot_5_example_rmap_computing.py +6 -6
  51. {py_neuromodulation-0.0.5 → py_neuromodulation-0.0.6}/examples/plot_6_real_time_demo.py +5 -7
  52. {py_neuromodulation-0.0.5 → py_neuromodulation-0.0.6}/examples/plot_7_lsl_example.py +13 -23
  53. {py_neuromodulation-0.0.5 → py_neuromodulation-0.0.6}/py_neuromodulation/__init__.py +16 -10
  54. py_neuromodulation-0.0.5/py_neuromodulation/nm_RMAP.py → py_neuromodulation-0.0.6/py_neuromodulation/analysis/RMAP.py +2 -2
  55. py_neuromodulation-0.0.6/py_neuromodulation/analysis/__init__.py +4 -0
  56. py_neuromodulation-0.0.5/py_neuromodulation/nm_decode.py → py_neuromodulation-0.0.6/py_neuromodulation/analysis/decode.py +4 -4
  57. py_neuromodulation-0.0.5/py_neuromodulation/nm_analysis.py → py_neuromodulation-0.0.6/py_neuromodulation/analysis/feature_reader.py +21 -20
  58. py_neuromodulation-0.0.5/py_neuromodulation/nm_plots.py → py_neuromodulation-0.0.6/py_neuromodulation/analysis/plots.py +54 -12
  59. py_neuromodulation-0.0.5/py_neuromodulation/nm_stats.py → py_neuromodulation-0.0.6/py_neuromodulation/analysis/stats.py +2 -8
  60. py_neuromodulation-0.0.5/py_neuromodulation/nm_settings.yaml → py_neuromodulation-0.0.6/py_neuromodulation/default_settings.yaml +6 -9
  61. py_neuromodulation-0.0.6/py_neuromodulation/features/__init__.py +31 -0
  62. py_neuromodulation-0.0.6/py_neuromodulation/features/bandpower.py +165 -0
  63. py_neuromodulation-0.0.5/py_neuromodulation/nm_bispectra.py → py_neuromodulation-0.0.6/py_neuromodulation/features/bispectra.py +8 -5
  64. py_neuromodulation-0.0.5/py_neuromodulation/nm_bursts.py → py_neuromodulation-0.0.6/py_neuromodulation/features/bursts.py +14 -9
  65. py_neuromodulation-0.0.5/py_neuromodulation/nm_coherence.py → py_neuromodulation-0.0.6/py_neuromodulation/features/coherence.py +17 -13
  66. py_neuromodulation-0.0.5/py_neuromodulation/nm_features.py → py_neuromodulation-0.0.6/py_neuromodulation/features/feature_processor.py +30 -53
  67. py_neuromodulation-0.0.5/py_neuromodulation/nm_fooof.py → py_neuromodulation-0.0.6/py_neuromodulation/features/fooof.py +11 -8
  68. py_neuromodulation-0.0.5/py_neuromodulation/nm_hjorth_raw.py → py_neuromodulation-0.0.6/py_neuromodulation/features/hjorth_raw.py +10 -5
  69. py_neuromodulation-0.0.5/py_neuromodulation/nm_linelength.py → py_neuromodulation-0.0.6/py_neuromodulation/features/linelength.py +1 -1
  70. py_neuromodulation-0.0.5/py_neuromodulation/nm_mne_connectivity.py → py_neuromodulation-0.0.6/py_neuromodulation/features/mne_connectivity.py +5 -6
  71. py_neuromodulation-0.0.5/py_neuromodulation/nm_nolds.py → py_neuromodulation-0.0.6/py_neuromodulation/features/nolds.py +5 -7
  72. py_neuromodulation-0.0.5/py_neuromodulation/nm_oscillatory.py → py_neuromodulation-0.0.6/py_neuromodulation/features/oscillatory.py +7 -181
  73. py_neuromodulation-0.0.5/py_neuromodulation/nm_sharpwaves.py → py_neuromodulation-0.0.6/py_neuromodulation/features/sharpwaves.py +13 -4
  74. py_neuromodulation-0.0.6/py_neuromodulation/filter/__init__.py +3 -0
  75. py_neuromodulation-0.0.5/py_neuromodulation/nm_kalmanfilter.py → py_neuromodulation-0.0.6/py_neuromodulation/filter/kalman_filter.py +67 -71
  76. py_neuromodulation-0.0.6/py_neuromodulation/filter/kalman_filter_external.py +1890 -0
  77. py_neuromodulation-0.0.5/py_neuromodulation/nm_filter.py → py_neuromodulation-0.0.6/py_neuromodulation/filter/mne_filter.py +128 -219
  78. py_neuromodulation-0.0.6/py_neuromodulation/filter/notch_filter.py +93 -0
  79. py_neuromodulation-0.0.6/py_neuromodulation/processing/__init__.py +10 -0
  80. py_neuromodulation-0.0.5/py_neuromodulation/nm_artifacts.py → py_neuromodulation-0.0.6/py_neuromodulation/processing/artifacts.py +2 -3
  81. py_neuromodulation-0.0.5/py_neuromodulation/nm_preprocessing.py → py_neuromodulation-0.0.6/py_neuromodulation/processing/data_preprocessor.py +19 -25
  82. py_neuromodulation-0.0.5/py_neuromodulation/nm_filter_preprocessing.py → py_neuromodulation-0.0.6/py_neuromodulation/processing/filter_preprocessing.py +3 -4
  83. py_neuromodulation-0.0.5/py_neuromodulation/nm_normalization.py → py_neuromodulation-0.0.6/py_neuromodulation/processing/normalization.py +9 -7
  84. py_neuromodulation-0.0.5/py_neuromodulation/nm_projection.py → py_neuromodulation-0.0.6/py_neuromodulation/processing/projection.py +14 -14
  85. py_neuromodulation-0.0.5/py_neuromodulation/nm_rereference.py → py_neuromodulation-0.0.6/py_neuromodulation/processing/rereference.py +13 -13
  86. py_neuromodulation-0.0.5/py_neuromodulation/nm_resample.py → py_neuromodulation-0.0.6/py_neuromodulation/processing/resample.py +1 -4
  87. py_neuromodulation-0.0.6/py_neuromodulation/stream/__init__.py +3 -0
  88. py_neuromodulation-0.0.5/py_neuromodulation/nm_run_analysis.py → py_neuromodulation-0.0.6/py_neuromodulation/stream/data_processor.py +42 -42
  89. py_neuromodulation-0.0.6/py_neuromodulation/stream/generator.py +53 -0
  90. py_neuromodulation-0.0.5/py_neuromodulation/nm_mnelsl_generator.py → py_neuromodulation-0.0.6/py_neuromodulation/stream/mnelsl_player.py +10 -6
  91. py_neuromodulation-0.0.5/py_neuromodulation/nm_mnelsl_stream.py → py_neuromodulation-0.0.6/py_neuromodulation/stream/mnelsl_stream.py +13 -9
  92. py_neuromodulation-0.0.5/py_neuromodulation/nm_settings.py → py_neuromodulation-0.0.6/py_neuromodulation/stream/settings.py +27 -24
  93. py_neuromodulation-0.0.5/py_neuromodulation/nm_stream.py → py_neuromodulation-0.0.6/py_neuromodulation/stream/stream.py +217 -188
  94. py_neuromodulation-0.0.6/py_neuromodulation/utils/__init__.py +2 -0
  95. py_neuromodulation-0.0.5/py_neuromodulation/nm_define_nmchannels.py → py_neuromodulation-0.0.6/py_neuromodulation/utils/channels.py +14 -9
  96. py_neuromodulation-0.0.5/py_neuromodulation/nm_database.py → py_neuromodulation-0.0.6/py_neuromodulation/utils/database.py +2 -2
  97. py_neuromodulation-0.0.5/py_neuromodulation/nm_IO.py → py_neuromodulation-0.0.6/py_neuromodulation/utils/io.py +42 -77
  98. py_neuromodulation-0.0.6/py_neuromodulation/utils/keyboard.py +52 -0
  99. py_neuromodulation-0.0.5/py_neuromodulation/nm_logger.py → py_neuromodulation-0.0.6/py_neuromodulation/utils/logging.py +3 -3
  100. py_neuromodulation-0.0.5/py_neuromodulation/nm_types.py → py_neuromodulation-0.0.6/py_neuromodulation/utils/types.py +72 -14
  101. {py_neuromodulation-0.0.5 → py_neuromodulation-0.0.6}/pyproject.toml +24 -52
  102. py_neuromodulation-0.0.6/sub_SETTINGS.yaml +112 -0
  103. py_neuromodulation-0.0.6/sub_SIDECAR.json +6 -0
  104. {py_neuromodulation-0.0.5 → py_neuromodulation-0.0.6}/tests/conftest.py +24 -26
  105. py_neuromodulation-0.0.6/tests/test_all_features.py +55 -0
  106. {py_neuromodulation-0.0.5 → py_neuromodulation-0.0.6}/tests/test_bispectra.py +12 -13
  107. {py_neuromodulation-0.0.5 → py_neuromodulation-0.0.6}/tests/test_bursts.py +15 -43
  108. {py_neuromodulation-0.0.5 → py_neuromodulation-0.0.6}/tests/test_database.py +11 -6
  109. {py_neuromodulation-0.0.5 → py_neuromodulation-0.0.6}/tests/test_feature_sampling_rates.py +31 -48
  110. {py_neuromodulation-0.0.5 → py_neuromodulation-0.0.6}/tests/test_fooof.py +11 -3
  111. {py_neuromodulation-0.0.5 → py_neuromodulation-0.0.6}/tests/test_initalization_offline_stream.py +5 -5
  112. {py_neuromodulation-0.0.5 → py_neuromodulation-0.0.6}/tests/test_lsl_stream.py +24 -25
  113. {py_neuromodulation-0.0.5 → py_neuromodulation-0.0.6}/tests/test_nan_values.py +4 -2
  114. {py_neuromodulation-0.0.5 → py_neuromodulation-0.0.6}/tests/test_nm_filter.py +4 -4
  115. {py_neuromodulation-0.0.5 → py_neuromodulation-0.0.6}/tests/test_nm_resample.py +4 -4
  116. {py_neuromodulation-0.0.5 → py_neuromodulation-0.0.6}/tests/test_normalization_settings.py +13 -13
  117. {py_neuromodulation-0.0.5 → py_neuromodulation-0.0.6}/tests/test_notch_filter.py +2 -2
  118. {py_neuromodulation-0.0.5 → py_neuromodulation-0.0.6}/tests/test_osc_features.py +19 -20
  119. {py_neuromodulation-0.0.5 → py_neuromodulation-0.0.6}/tests/test_preprocessing_filter.py +9 -4
  120. {py_neuromodulation-0.0.5 → py_neuromodulation-0.0.6}/tests/test_rereference.py +29 -31
  121. {py_neuromodulation-0.0.5 → py_neuromodulation-0.0.6}/tests/test_sampling.py +3 -1
  122. {py_neuromodulation-0.0.5 → py_neuromodulation-0.0.6}/tests/test_settings_change_after_init.py +25 -15
  123. {py_neuromodulation-0.0.5 → py_neuromodulation-0.0.6}/tests/test_sharpwave.py +12 -11
  124. {py_neuromodulation-0.0.5 → py_neuromodulation-0.0.6}/tests/test_target_channel_add.py +29 -31
  125. {py_neuromodulation-0.0.5 → py_neuromodulation-0.0.6}/tests/test_timing.py +13 -18
  126. py_neuromodulation-0.0.5/py_neuromodulation/FieldTrip.py +0 -589
  127. py_neuromodulation-0.0.5/py_neuromodulation/_write_example_dataset_helper.py +0 -83
  128. py_neuromodulation-0.0.5/py_neuromodulation/nm_generator.py +0 -45
  129. py_neuromodulation-0.0.5/py_neuromodulation/nm_stream_abc.py +0 -166
  130. py_neuromodulation-0.0.5/tests/__init__.py +0 -0
  131. py_neuromodulation-0.0.5/tests/test_all_features.py +0 -55
  132. {py_neuromodulation-0.0.5 → py_neuromodulation-0.0.6}/.gitignore +0 -0
  133. {py_neuromodulation-0.0.5 → py_neuromodulation-0.0.6}/LICENSE +0 -0
  134. {py_neuromodulation-0.0.5 → py_neuromodulation-0.0.6}/README.rst +0 -0
  135. {py_neuromodulation-0.0.5 → py_neuromodulation-0.0.6}/examples/README.rst +0 -0
  136. {py_neuromodulation-0.0.5 → py_neuromodulation-0.0.6}/examples/example_cebra_decoding.html +0 -0
  137. {py_neuromodulation-0.0.5 → py_neuromodulation-0.0.6}/examples/example_cebra_decoding.ipynb +0 -0
  138. {py_neuromodulation-0.0.5 → py_neuromodulation-0.0.6}/examples/example_rmap.ipynb +0 -0
  139. {py_neuromodulation-0.0.5 → py_neuromodulation-0.0.6}/examples/plot_8_cebra_example.py +0 -0
  140. {py_neuromodulation-0.0.5 → py_neuromodulation-0.0.6}/py_neuromodulation/ConnectivityDecoding/Automated Anatomical Labeling 3 (Rolls 2020).nii +0 -0
  141. {py_neuromodulation-0.0.5 → py_neuromodulation-0.0.6}/py_neuromodulation/ConnectivityDecoding/_get_grid_hull.m +0 -0
  142. {py_neuromodulation-0.0.5 → py_neuromodulation-0.0.6}/py_neuromodulation/ConnectivityDecoding/_get_grid_whole_brain.py +0 -0
  143. {py_neuromodulation-0.0.5 → py_neuromodulation-0.0.6}/py_neuromodulation/ConnectivityDecoding/_helper_write_connectome.py +0 -0
  144. {py_neuromodulation-0.0.5 → py_neuromodulation-0.0.6}/py_neuromodulation/ConnectivityDecoding/mni_coords_cortical_surface.mat +0 -0
  145. {py_neuromodulation-0.0.5 → py_neuromodulation-0.0.6}/py_neuromodulation/ConnectivityDecoding/mni_coords_whole_brain.mat +0 -0
  146. {py_neuromodulation-0.0.5 → py_neuromodulation-0.0.6}/py_neuromodulation/ConnectivityDecoding/rmap_func_all.nii +0 -0
  147. {py_neuromodulation-0.0.5 → py_neuromodulation-0.0.6}/py_neuromodulation/ConnectivityDecoding/rmap_struc.nii +0 -0
  148. {py_neuromodulation-0.0.5 → py_neuromodulation-0.0.6}/py_neuromodulation/data/README +0 -0
  149. {py_neuromodulation-0.0.5 → py_neuromodulation-0.0.6}/py_neuromodulation/data/dataset_description.json +0 -0
  150. {py_neuromodulation-0.0.5 → py_neuromodulation-0.0.6}/py_neuromodulation/data/participants.json +0 -0
  151. {py_neuromodulation-0.0.5 → py_neuromodulation-0.0.6}/py_neuromodulation/data/participants.tsv +0 -0
  152. {py_neuromodulation-0.0.5 → py_neuromodulation-0.0.6}/py_neuromodulation/data/sub-testsub/ses-EphysMedOff/ieeg/sub-testsub_ses-EphysMedOff_space-mni_coordsystem.json +0 -0
  153. {py_neuromodulation-0.0.5 → py_neuromodulation-0.0.6}/py_neuromodulation/data/sub-testsub/ses-EphysMedOff/ieeg/sub-testsub_ses-EphysMedOff_space-mni_electrodes.tsv +0 -0
  154. {py_neuromodulation-0.0.5 → py_neuromodulation-0.0.6}/py_neuromodulation/data/sub-testsub/ses-EphysMedOff/ieeg/sub-testsub_ses-EphysMedOff_task-gripforce_run-0_channels.tsv +0 -0
  155. {py_neuromodulation-0.0.5 → py_neuromodulation-0.0.6}/py_neuromodulation/data/sub-testsub/ses-EphysMedOff/ieeg/sub-testsub_ses-EphysMedOff_task-gripforce_run-0_ieeg.eeg +0 -0
  156. {py_neuromodulation-0.0.5 → py_neuromodulation-0.0.6}/py_neuromodulation/data/sub-testsub/ses-EphysMedOff/ieeg/sub-testsub_ses-EphysMedOff_task-gripforce_run-0_ieeg.json +0 -0
  157. {py_neuromodulation-0.0.5 → py_neuromodulation-0.0.6}/py_neuromodulation/data/sub-testsub/ses-EphysMedOff/ieeg/sub-testsub_ses-EphysMedOff_task-gripforce_run-0_ieeg.vhdr +0 -0
  158. {py_neuromodulation-0.0.5 → py_neuromodulation-0.0.6}/py_neuromodulation/data/sub-testsub/ses-EphysMedOff/ieeg/sub-testsub_ses-EphysMedOff_task-gripforce_run-0_ieeg.vmrk +0 -0
  159. {py_neuromodulation-0.0.5 → py_neuromodulation-0.0.6}/py_neuromodulation/data/sub-testsub/ses-EphysMedOff/sub-testsub_ses-EphysMedOff_scans.tsv +0 -0
  160. {py_neuromodulation-0.0.5 → py_neuromodulation-0.0.6}/py_neuromodulation/grid_cortex.tsv +0 -0
  161. {py_neuromodulation-0.0.5 → py_neuromodulation-0.0.6}/py_neuromodulation/grid_subcortex.tsv +0 -0
  162. {py_neuromodulation-0.0.5 → py_neuromodulation-0.0.6}/py_neuromodulation/liblsl/libpugixml.so.1.12 +0 -0
  163. {py_neuromodulation-0.0.5 → py_neuromodulation-0.0.6}/py_neuromodulation/liblsl/linux/bionic_amd64/liblsl.1.16.2.so +0 -0
  164. {py_neuromodulation-0.0.5 → py_neuromodulation-0.0.6}/py_neuromodulation/liblsl/linux/bookworm_amd64/liblsl.1.16.2.so +0 -0
  165. {py_neuromodulation-0.0.5 → py_neuromodulation-0.0.6}/py_neuromodulation/liblsl/linux/focal_amd46/liblsl.1.16.2.so +0 -0
  166. {py_neuromodulation-0.0.5 → py_neuromodulation-0.0.6}/py_neuromodulation/liblsl/linux/jammy_amd64/liblsl.1.16.2.so +0 -0
  167. {py_neuromodulation-0.0.5 → py_neuromodulation-0.0.6}/py_neuromodulation/liblsl/linux/jammy_x86/liblsl.1.16.2.so +0 -0
  168. {py_neuromodulation-0.0.5 → py_neuromodulation-0.0.6}/py_neuromodulation/liblsl/linux/noble_amd64/liblsl.1.16.2.so +0 -0
  169. {py_neuromodulation-0.0.5 → py_neuromodulation-0.0.6}/py_neuromodulation/liblsl/macos/amd64/liblsl.1.16.2.dylib +0 -0
  170. {py_neuromodulation-0.0.5 → py_neuromodulation-0.0.6}/py_neuromodulation/liblsl/macos/arm64/liblsl.1.16.0.dylib +0 -0
  171. {py_neuromodulation-0.0.5 → py_neuromodulation-0.0.6}/py_neuromodulation/liblsl/windows/amd64/liblsl.1.16.2.dll +0 -0
  172. {py_neuromodulation-0.0.5 → py_neuromodulation-0.0.6}/py_neuromodulation/liblsl/windows/x86/liblsl.1.16.2.dll +0 -0
  173. {py_neuromodulation-0.0.5 → py_neuromodulation-0.0.6}/py_neuromodulation/plots/STN_surf.mat +0 -0
  174. {py_neuromodulation-0.0.5 → py_neuromodulation-0.0.6}/py_neuromodulation/plots/Vertices.mat +0 -0
  175. {py_neuromodulation-0.0.5 → py_neuromodulation-0.0.6}/py_neuromodulation/plots/faces.mat +0 -0
  176. {py_neuromodulation-0.0.5 → py_neuromodulation-0.0.6}/py_neuromodulation/plots/grid.mat +0 -0
  177. {py_neuromodulation-0.0.5/py_neuromodulation/utils → py_neuromodulation-0.0.6/tests}/__init__.py +0 -0
  178. {py_neuromodulation-0.0.5 → py_neuromodulation-0.0.6}/tests/test_all_examples.py +0 -0
@@ -0,0 +1,57 @@
1
+ name: docs_pages_workflow
2
+
3
+ on:
4
+ push:
5
+ branches: [ main ]
6
+
7
+ jobs:
8
+
9
+ build_docs_job:
10
+ runs-on: ubuntu-latest
11
+ env:
12
+ GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }}
13
+
14
+ steps:
15
+ - name: Checkout
16
+ uses: actions/checkout@v2.3.4
17
+
18
+ - name: Install and cache Linux packages
19
+ if: ${{ runner.os == 'Linux' }}
20
+ uses: tecolicom/actions-use-apt-tools@v1
21
+ with:
22
+ tools: binutils qtbase5-dev qt5-qmake libpugixml1v5
23
+
24
+ - name: Set up Python with uv
25
+ uses: drivendataorg/setup-python-uv-action@v1
26
+ with:
27
+ python-version: '3.10'
28
+ cache: packages
29
+ cache-dependency-path: pyproject.toml
30
+
31
+ - name: Install dependencies
32
+ run: |
33
+ uv pip install .[docs]
34
+
35
+ - name: make the sphinx docs
36
+ run: |
37
+ make -C docs clean
38
+ make -C docs html
39
+
40
+ - name: Init new repo in dist folder and commit generated files
41
+ run: |
42
+ cd docs/build/html/
43
+ git init
44
+ touch .nojekyll
45
+ git add -A
46
+ git config --local user.email "github-actions[bot]@users.noreply.github.com"
47
+ git config --local user.name "github-actions[bot]"
48
+ git commit -m 'deploy'
49
+ git config --global --add safe.directory /github/workspace/docs/build/html
50
+
51
+ - name: Force push to destination branch
52
+ uses: ad-m/github-push-action@master
53
+ with:
54
+ github_token: ${{ secrets.GITHUB_TOKEN }}
55
+ branch: gh-pages
56
+ force: true
57
+ directory: ./docs/build/html
@@ -0,0 +1,39 @@
1
+ name: Publish Python Package
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - 'v*' # Only trigger on tag pushes like v1.0.0
7
+
8
+ jobs:
9
+ publish:
10
+ runs-on: ubuntu-latest
11
+
12
+ steps:
13
+ - name: Checkout code
14
+ uses: actions/checkout@v3
15
+
16
+ - name: Set up Python
17
+ uses: actions/setup-python@v4
18
+ with:
19
+ python-version: '3.11' # Specify your Python version
20
+
21
+ - name: Install dependencies
22
+ run: |
23
+ python -m pip install --upgrade pip
24
+ pip install build
25
+
26
+ - name: Build package
27
+ run: python -m build
28
+
29
+ - name: Publish to PyPI
30
+ uses: pypa/gh-action-pypi-publish@v1.10.0
31
+ with:
32
+ password: ${{ secrets.PYPI_API_TOKEN }}
33
+
34
+ - name: Create GitHub release
35
+ uses: softprops/action-gh-release@v1
36
+ with:
37
+ files: dist/*
38
+ env:
39
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -0,0 +1,59 @@
1
+ name: Tests
2
+ on:
3
+ push:
4
+ branches:
5
+ - main
6
+ - "**"
7
+ paths-ignore:
8
+ - "docs/**"
9
+ - "*.md"
10
+ - "*.rst"
11
+ - "*.txt"
12
+ pull_request:
13
+ branches:
14
+ - main
15
+ - "*.x"
16
+ paths-ignore:
17
+ - "docs/**"
18
+ - "*.md"
19
+ - "*.rst"
20
+ - "*.txt"
21
+ jobs:
22
+ tests:
23
+ name: ${{ matrix.platform.name }} Python ${{ matrix.python }}
24
+ runs-on: ${{ matrix.platform.os }}
25
+ strategy:
26
+ fail-fast: false
27
+ matrix:
28
+ platform:
29
+ - os: ubuntu-latest
30
+ name: Linux
31
+ - os: macos-latest
32
+ name: MacOS
33
+ - os: windows-latest
34
+ name: Windows
35
+ python:
36
+ - "3.11"
37
+ - "3.12"
38
+ steps:
39
+ - uses: actions/checkout@v4
40
+ - name: Install and cache Linux packages
41
+ if: ${{ runner.os == 'Linux' }}
42
+ uses: awalsh128/cache-apt-pkgs-action@latest
43
+ with:
44
+ packages: binutils qtbase5-dev qt5-qmake libpugixml1v5
45
+ - name: Install uv
46
+ uses: astral-sh/setup-uv@v3
47
+ with:
48
+ version: "0.4.12"
49
+ enable-cache: true
50
+ cache-dependency-glob: "**/pyproject.toml"
51
+ - name: Install Python and dependencies
52
+ run: |
53
+ uv python install ${{ matrix.python }}
54
+ uv venv
55
+ uv pip install .[test]
56
+ - name: Run tests
57
+ run: |
58
+ ${{ (runner.os == 'Windows' && '.venv\Scripts\activate') || 'source .venv/bin/activate' }}
59
+ pytest -n auto tests/
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: py_neuromodulation
3
- Version: 0.0.5
3
+ Version: 0.0.6
4
4
  Summary: Real-time analysis of intracranial neurophysiology recordings.
5
5
  Project-URL: bugtracker, https://github.com/neuromodulation/py_neuromodulation/issues
6
6
  Project-URL: repository, https://github.com/neuromodulation/py_neuromodulation
@@ -33,11 +33,8 @@ Classifier: Development Status :: 2 - Pre-Alpha
33
33
  Classifier: License :: OSI Approved :: MIT License
34
34
  Classifier: Programming Language :: Python
35
35
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
36
- Requires-Python: >=3.10
37
- Requires-Dist: filterpy>=1.4.5
36
+ Requires-Python: >=3.11
38
37
  Requires-Dist: fooof
39
- Requires-Dist: hatch>=1.9.4
40
- Requires-Dist: imbalanced-learn
41
38
  Requires-Dist: joblib>=1.3.2
42
39
  Requires-Dist: matplotlib>=3.9.0
43
40
  Requires-Dist: mne
@@ -45,23 +42,18 @@ Requires-Dist: mne-bids>=0.8
45
42
  Requires-Dist: mne-connectivity
46
43
  Requires-Dist: mne-lsl>=1.2.0
47
44
  Requires-Dist: mrmr-selection
48
- Requires-Dist: nibabel>=5.2.1
49
45
  Requires-Dist: nolds
50
46
  Requires-Dist: numpy>=1.21.2
51
47
  Requires-Dist: pandas>=2.0.0
52
- Requires-Dist: pip>=24.2
53
48
  Requires-Dist: pyarrow>=14.0.2
54
- Requires-Dist: pybispectra>=1.0.0
49
+ Requires-Dist: pybispectra>=1.2.0
55
50
  Requires-Dist: pydantic>=2.7.3
56
- Requires-Dist: pynput
57
51
  Requires-Dist: pyparrm
58
52
  Requires-Dist: pyqt5
59
- Requires-Dist: scikit-image
60
53
  Requires-Dist: scikit-learn>=0.24.2
61
54
  Requires-Dist: scikit-optimize
62
55
  Requires-Dist: scipy>=1.7.1
63
56
  Requires-Dist: seaborn>=0.11
64
- Requires-Dist: statsmodels
65
57
  Provides-Extra: dev
66
58
  Requires-Dist: notebook; extra == 'dev'
67
59
  Requires-Dist: pytest-cov; extra == 'dev'
@@ -0,0 +1,20 @@
1
+ # Minimal makefile for Sphinx documentation
2
+ #
3
+
4
+ # You can set these variables from the command line, and also
5
+ # from the environment for the first two.
6
+ SPHINXOPTS ?=
7
+ SPHINXBUILD ?= sphinx-build
8
+ SOURCEDIR = source
9
+ BUILDDIR = build
10
+
11
+ # Put it first so that "make" without argument is like "make help".
12
+ help:
13
+ @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
14
+
15
+ .PHONY: help Makefile
16
+
17
+ # Catch-all target: route all unknown targets to Sphinx using the new
18
+ # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
19
+ %: Makefile
20
+ @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
@@ -0,0 +1,35 @@
1
+ @ECHO OFF
2
+
3
+ pushd %~dp0
4
+
5
+ REM Command file for Sphinx documentation
6
+
7
+ if "%SPHINXBUILD%" == "" (
8
+ set SPHINXBUILD=sphinx-build
9
+ )
10
+ set SOURCEDIR=source
11
+ set BUILDDIR=build
12
+
13
+ if "%1" == "" goto help
14
+
15
+ %SPHINXBUILD% >NUL 2>NUL
16
+ if errorlevel 9009 (
17
+ echo.
18
+ echo.The 'sphinx-build' command was not found. Make sure you have Sphinx
19
+ echo.installed, then set the SPHINXBUILD environment variable to point
20
+ echo.to the full path of the 'sphinx-build' executable. Alternatively you
21
+ echo.may add the Sphinx directory to PATH.
22
+ echo.
23
+ echo.If you don't have Sphinx installed, grab it from
24
+ echo.http://sphinx-doc.org/
25
+ exit /b 1
26
+ )
27
+
28
+ %SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%
29
+ goto end
30
+
31
+ :help
32
+ %SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%
33
+
34
+ :end
35
+ popd
@@ -0,0 +1,16 @@
1
+ @import url("theme.css");
2
+
3
+ .highlight a {
4
+ text-decoration: underline;
5
+ }
6
+
7
+ .deprecated p {
8
+ padding: 10px 7px 10px 10px;
9
+ color: #b94a48;
10
+ background-color: #F3E5E5;
11
+ border: 1px solid #eed3d7;
12
+ }
13
+
14
+ .deprecated p span.versionmodified {
15
+ font-weight: bold;
16
+ }
@@ -0,0 +1,7 @@
1
+ {{ fullname | escape | underline}}
2
+
3
+ .. currentmodule:: {{ module }}
4
+
5
+ .. autoclass:: {{ objname }}
6
+ :members:
7
+ :inherited-members:
@@ -0,0 +1,67 @@
1
+ {{ fullname | escape | underline}}
2
+
3
+ .. automodule:: {{ fullname }}
4
+
5
+ {% block attributes %}
6
+ {% if attributes %}
7
+ .. rubric:: Module Attributes
8
+
9
+ .. autosummary::
10
+ :toctree:
11
+ {% for item in attributes %}
12
+ {{ item }}
13
+ {%- endfor %}
14
+ {% endif %}
15
+ {% endblock %}
16
+
17
+ {% block functions %}
18
+ {% if functions %}
19
+ .. rubric:: {{ _('Functions') }}
20
+
21
+ .. autosummary::
22
+ :toctree:
23
+ :nosignatures:
24
+ {% for item in functions %}
25
+ {{ item }}
26
+ {%- endfor %}
27
+ {% endif %}
28
+ {% endblock %}
29
+
30
+ {% block classes %}
31
+ {% if classes %}
32
+ .. rubric:: {{ _('Classes') }}
33
+
34
+ .. autosummary::
35
+ :toctree:
36
+ :template: custom-class-template.rst
37
+ {% for item in classes %}
38
+ {{ item }}
39
+ {%- endfor %}
40
+ {% endif %}
41
+ {% endblock %}
42
+
43
+ {% block exceptions %}
44
+ {% if exceptions %}
45
+ .. rubric:: {{ _('Exceptions') }}
46
+
47
+ .. autosummary::
48
+ :toctree:
49
+ {% for item in exceptions %}
50
+ {{ item }}
51
+ {%- endfor %}
52
+ {% endif %}
53
+ {% endblock %}
54
+
55
+ {% block modules %}
56
+ {% if modules %}
57
+ .. rubric:: Modules
58
+
59
+ .. autosummary::
60
+ :toctree:
61
+ :template: custom-module-template.rst
62
+ :recursive:
63
+ {% for item in modules %}
64
+ {{ item }}
65
+ {%- endfor %}
66
+ {% endif %}
67
+ {% endblock %}
@@ -0,0 +1,51 @@
1
+ API Documentation
2
+ =================
3
+
4
+ Parametrization
5
+ ---------------
6
+
7
+ .. toctree::
8
+ :maxdepth: 4
9
+
10
+ nm_stream_abc
11
+ nm_stream
12
+ nm_settings
13
+ nm_define_nmchannels
14
+ nm_generator
15
+ nm_run_analysis
16
+ nm_resample
17
+ nm_normalization
18
+ nm_rereference
19
+ nm_projection
20
+ nm_IO
21
+
22
+ Feature Estimation
23
+ ------------------
24
+
25
+ .. toctree::
26
+ :maxdepth: 4
27
+
28
+ nm_features
29
+ nm_filter
30
+ nm_oscillatory
31
+ nm_fooof
32
+ nm_kalmanfilter
33
+ nm_hjorth
34
+ nm_sharpwaves
35
+ nm_bursts
36
+ nm_coherence
37
+ nm_nolds
38
+ nm_mne_connectivity
39
+ nm_linelength
40
+
41
+ Analysis
42
+ --------
43
+
44
+ .. toctree::
45
+ :maxdepth: 4
46
+
47
+ nm_analysis
48
+ nm_decode
49
+ nm_plots
50
+ nm_RMAP
51
+ nm_stats
@@ -0,0 +1,95 @@
1
+ # Configuration file for the Sphinx documentation builder.
2
+ #
3
+ # This file only contains a selection of the most common options. For a full
4
+ # list see the documentation:
5
+ # https://www.sphinx-doc.org/en/master/usage/configuration.html
6
+
7
+ # -- Path setup --------------------------------------------------------------
8
+ import sys
9
+ from pathlib import Path
10
+ from sphinx_gallery.sorting import FileNameSortKey
11
+
12
+ print("CURRENT WORKING DIRECTORY")
13
+ print(Path.cwd())
14
+
15
+ SCRIPT_DIR = Path(__file__).absolute().parent
16
+
17
+ if SCRIPT_DIR.name == "source":
18
+ # this check is necessary, so we can also run the script from the root directory
19
+ SCRIPT_DIR = SCRIPT_DIR.parent.parent / "py_neuromodulation"
20
+
21
+ print(f"Script Directory to add: {SCRIPT_DIR}")
22
+ sys.path.append(str(SCRIPT_DIR))
23
+
24
+ print(sys.path)
25
+
26
+ exclude_patterns = ["_build", "_templates"]
27
+
28
+
29
+ # -- Project information -----------------------------------------------------
30
+ project = "py_neuromodulation"
31
+ copyright = "2021, Timon Merk"
32
+ author = "Timon Merk"
33
+
34
+ source_parsers = {
35
+ ".md": "recommonmark.parser.CommonMarkParser",
36
+ }
37
+
38
+ extensions = [
39
+ "sphinx.ext.autodoc",
40
+ "sphinx.ext.autosummary",
41
+ "sphinx.ext.doctest",
42
+ "sphinx.ext.intersphinx",
43
+ "sphinx.ext.viewcode",
44
+ "sphinx.ext.mathjax",
45
+ "sphinx.ext.napoleon",
46
+ "sphinx.ext.autosectionlabel",
47
+ "sphinx_gallery.gen_gallery",
48
+ "sphinx_togglebutton",
49
+ # "nbsphinx",
50
+ ]
51
+
52
+ source_suffix = [
53
+ ".rst",
54
+ ".md",
55
+ ]
56
+
57
+ autosummary_generate = True
58
+
59
+ PYDEVD_DISABLE_FILE_VALIDATION = 1
60
+
61
+ sphinx_gallery_conf = {
62
+ "examples_dirs": "../../examples",
63
+ "gallery_dirs": "auto_examples",
64
+ "within_subsection_order": FileNameSortKey,
65
+ }
66
+
67
+ templates_path = ["_templates"]
68
+ exclude_patterns = []
69
+
70
+
71
+ html_theme = "pydata_sphinx_theme"
72
+ html_static_path = ["_static"]
73
+
74
+ html_theme_options = {
75
+ "show_nav_level": 4,
76
+ "icon_links": [
77
+ dict(
78
+ name="GitHub",
79
+ url="https://github.com/neuromodulation/py_neuromodulation",
80
+ icon="fa-brands fa-square-github",
81
+ )
82
+ ],
83
+ }
84
+
85
+ # -- Intersphinx configuration -----------------------------------------------
86
+
87
+ intersphinx_mapping = {
88
+ "python": ("https://docs.python.org/3", None),
89
+ "numpy": ("https://numpy.org/doc/stable", None),
90
+ "scipy": ("https://docs.scipy.org/doc/scipy", None),
91
+ "matplotlib": ("https://matplotlib.org/stable", None),
92
+ "numba": ("https://numba.readthedocs.io/en/latest", None),
93
+ "mne": ("https://mne.tools/stable", None),
94
+ "pandas": ("https://pandas.pydata.org/docs", None),
95
+ }
@@ -0,0 +1,36 @@
1
+ Contribution Guide
2
+ ==================
3
+
4
+ Welcome to the contributing guide of py_neuromodulation! We are very happy that you are interested in our project.
5
+
6
+ In general we recommend placing questions and issues in the `GitHub issue tracker <https://github.com/neuromodulation/py_neuromodulation/issues>`_.
7
+
8
+ For code formatting we use `ruff <https://docs.astral.sh/ruff/formatter/>`_.
9
+
10
+ For code development, we recommend using the package manager `rye <https://rye.astral.sh/>`_.
11
+
12
+ To setup the python environment, type
13
+
14
+ ::
15
+
16
+ rye pin 3.12
17
+
18
+ then sync the environment with
19
+
20
+ ::
21
+
22
+ rye sync
23
+
24
+ Depending on your operating system, activate the rye virtual environment:
25
+
26
+ ::
27
+
28
+ . .venv/bin/activate
29
+
30
+ To install the documentation dependencies use pip:
31
+
32
+ ::
33
+
34
+ python -m pip install .[docs]
35
+
36
+
@@ -0,0 +1,66 @@
1
+ .. py_neuromodulation documentation master file, created by
2
+ sphinx-quickstart on Sun Apr 18 11:04:51 2021.
3
+
4
+ Welcome to py_neuromodulation's documentation!
5
+ ==============================================
6
+
7
+ The *py_neuromodulation* toolbox allows for real time capable feature estimation of invasive electrophysiological data.
8
+
9
+ .. toctree::
10
+ :maxdepth: 2
11
+ :caption: Contents
12
+
13
+ installation
14
+ usage
15
+ auto_examples/index
16
+ api_documentation
17
+ contributing
18
+
19
+ Why py_neuromodulation?
20
+ -----------------------
21
+
22
+ Analyzing neural data can be a troublesome, trial and error prone,
23
+ and beginner unfriendly process. *py_neuromodulation* allows using a simple
24
+ interface for extraction of established features and includes commonly applied pre -and postprocessing methods.
25
+
26
+ Basically only **time series data** with a corresponding **sampling frequency** are required.
27
+
28
+ The output will be a pandas DataFrame including different time-resolved computed features. Internally a **stream** get's initialized,
29
+ which simulates an *online* data-stream that can also be be used for real-time analysis.
30
+
31
+ The following features are currently included:
32
+
33
+ * oscillatory: fft, stft or bandpass filtered band power
34
+ * `temporal waveform shape <https://www.sciencedirect.com/science/article/pii/S1364661316302182>`_
35
+ * `fooof <https://fooof-tools.github.io/fooof/>`_
36
+ * `mne_connectivity estimates <https://mne.tools/mne-connectivity/stable/index.html>`_
37
+ * `Hjorth parameter <https://en.wikipedia.org/wiki/Hjorth_parameters>`_
38
+ * `non-linear dynamical estimates <https://nolds.readthedocs.io/en/latest/>`_
39
+ * various burst features
40
+ * line length
41
+ * and more...
42
+
43
+ Find here the preprint of **py_neuromodulation** called *"Invasive neurophysiology and whole brain connectomics for neural decoding in patients with brain implants"* [1]_.
44
+
45
+
46
+ How can those features be used?
47
+ -------------------------------
48
+
49
+ The original intention for writing this toolbox was movement decoding from invasive brain signals [2]_.
50
+ The application however could be any neural decoding and analysis problem.
51
+ *py_neuromodulation* offers wrappers around common practice machine learning methods for efficient analysis.
52
+
53
+ References
54
+ ----------
55
+
56
+ .. [1] Merk, T. et al. *Invasive neurophysiology and whole brain connectomics for neural decoding in patients with brain implants*, `https://doi.org/10.21203/rs.3.rs-3212709/v1` (2023).
57
+ .. [2] Merk, T. et al. *Electrocorticography is superior to subthalamic local field potentials for movement decoding in Parkinson’s disease*. Elife 11, e75126, `https://doi.org/10.7554/eLife.75126` (2022).
58
+
59
+
60
+
61
+ Indices and tables
62
+ ------------------
63
+
64
+ * :ref:`genindex`
65
+ * :ref:`modindex`
66
+ * :ref:`search`
@@ -0,0 +1,46 @@
1
+ Installation
2
+ ============
3
+
4
+ py_neuromodulation requires at least python 3.10. For installation you can use pip:
5
+
6
+ .. code-block::
7
+
8
+ pip install py-neuromodulation
9
+
10
+ We recommend however installing the package using `rye <https://rye-up.com/guide/installation/>`_:
11
+
12
+ .. code-block::
13
+
14
+ git clone https://github.com/neuromodulation/py_neuromodulation.git
15
+ rye pin 3.11
16
+ rye sync
17
+
18
+ And then activating the virtual environment e.g. in Windows using:
19
+
20
+ .. code-block::
21
+
22
+ .\.venv\Scripts\activate
23
+
24
+ Alternatively you can also install the package in a conda environment:
25
+
26
+ conda create -n pynm-test python=3.11
27
+ conda activate pynm-test
28
+
29
+ Then install the packages listed in the `pyproject.toml`:
30
+
31
+ .. code-block::
32
+
33
+ pip install .
34
+
35
+
36
+ Optionally the ipython kernel can be specified for the installed pynm-test conda environment:
37
+
38
+ .. code-block::
39
+
40
+ ipython kernel install --user --name=pynm-test
41
+
42
+ Then *py_neuromodulation* can be imported via:
43
+
44
+ .. code-block::
45
+
46
+ import py_neuromodulation as nm
@@ -0,0 +1,5 @@
1
+ nm_IO.py
2
+ ========
3
+
4
+ .. automodule:: nm_IO
5
+ :members:
@@ -0,0 +1,5 @@
1
+ nm_RMAP.py
2
+ ==========
3
+
4
+ .. automodule:: nm_RMAP
5
+ :members:
@@ -0,0 +1,5 @@
1
+ nm_analysis.py
2
+ ==============
3
+
4
+ .. automodule:: nm_analysis
5
+ :members:
@@ -0,0 +1,5 @@
1
+ nm_bursts.py
2
+ ============
3
+
4
+ .. automodule:: nm_bursts
5
+ :members:
@@ -0,0 +1,5 @@
1
+ nm_coherence.py
2
+ ===============
3
+
4
+ .. automodule:: nm_coherence
5
+ :members: