py-neuromodulation 0.0.3__py3-none-any.whl → 0.0.5__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 (233) hide show
  1. py_neuromodulation/ConnectivityDecoding/Automated Anatomical Labeling 3 (Rolls 2020).nii +0 -0
  2. py_neuromodulation/ConnectivityDecoding/_get_grid_hull.m +34 -0
  3. py_neuromodulation/ConnectivityDecoding/_get_grid_whole_brain.py +95 -0
  4. py_neuromodulation/ConnectivityDecoding/_helper_write_connectome.py +107 -0
  5. py_neuromodulation/ConnectivityDecoding/mni_coords_cortical_surface.mat +0 -0
  6. py_neuromodulation/ConnectivityDecoding/mni_coords_whole_brain.mat +0 -0
  7. py_neuromodulation/ConnectivityDecoding/rmap_func_all.nii +0 -0
  8. py_neuromodulation/ConnectivityDecoding/rmap_struc.nii +0 -0
  9. py_neuromodulation/FieldTrip.py +589 -589
  10. py_neuromodulation/__init__.py +74 -13
  11. py_neuromodulation/_write_example_dataset_helper.py +83 -65
  12. py_neuromodulation/data/README +6 -0
  13. py_neuromodulation/data/dataset_description.json +8 -0
  14. py_neuromodulation/data/participants.json +32 -0
  15. py_neuromodulation/data/participants.tsv +2 -0
  16. py_neuromodulation/data/sub-testsub/ses-EphysMedOff/ieeg/sub-testsub_ses-EphysMedOff_space-mni_coordsystem.json +5 -0
  17. py_neuromodulation/data/sub-testsub/ses-EphysMedOff/ieeg/sub-testsub_ses-EphysMedOff_space-mni_electrodes.tsv +11 -0
  18. py_neuromodulation/data/sub-testsub/ses-EphysMedOff/ieeg/sub-testsub_ses-EphysMedOff_task-gripforce_run-0_channels.tsv +11 -0
  19. py_neuromodulation/data/sub-testsub/ses-EphysMedOff/ieeg/sub-testsub_ses-EphysMedOff_task-gripforce_run-0_ieeg.eeg +0 -0
  20. py_neuromodulation/data/sub-testsub/ses-EphysMedOff/ieeg/sub-testsub_ses-EphysMedOff_task-gripforce_run-0_ieeg.json +18 -0
  21. py_neuromodulation/data/sub-testsub/ses-EphysMedOff/ieeg/sub-testsub_ses-EphysMedOff_task-gripforce_run-0_ieeg.vhdr +35 -0
  22. py_neuromodulation/data/sub-testsub/ses-EphysMedOff/ieeg/sub-testsub_ses-EphysMedOff_task-gripforce_run-0_ieeg.vmrk +13 -0
  23. py_neuromodulation/data/sub-testsub/ses-EphysMedOff/sub-testsub_ses-EphysMedOff_scans.tsv +2 -0
  24. py_neuromodulation/grid_cortex.tsv +40 -0
  25. py_neuromodulation/grid_subcortex.tsv +1429 -0
  26. py_neuromodulation/liblsl/libpugixml.so.1.12 +0 -0
  27. py_neuromodulation/liblsl/linux/bionic_amd64/liblsl.1.16.2.so +0 -0
  28. py_neuromodulation/liblsl/linux/bookworm_amd64/liblsl.1.16.2.so +0 -0
  29. py_neuromodulation/liblsl/linux/focal_amd46/liblsl.1.16.2.so +0 -0
  30. py_neuromodulation/liblsl/linux/jammy_amd64/liblsl.1.16.2.so +0 -0
  31. py_neuromodulation/liblsl/linux/jammy_x86/liblsl.1.16.2.so +0 -0
  32. py_neuromodulation/liblsl/linux/noble_amd64/liblsl.1.16.2.so +0 -0
  33. py_neuromodulation/liblsl/macos/amd64/liblsl.1.16.2.dylib +0 -0
  34. py_neuromodulation/liblsl/macos/arm64/liblsl.1.16.0.dylib +0 -0
  35. py_neuromodulation/liblsl/windows/amd64/liblsl.1.16.2.dll +0 -0
  36. py_neuromodulation/liblsl/windows/x86/liblsl.1.16.2.dll +0 -0
  37. py_neuromodulation/nm_IO.py +413 -417
  38. py_neuromodulation/nm_RMAP.py +496 -531
  39. py_neuromodulation/nm_analysis.py +993 -1074
  40. py_neuromodulation/nm_artifacts.py +30 -25
  41. py_neuromodulation/nm_bispectra.py +154 -168
  42. py_neuromodulation/nm_bursts.py +292 -198
  43. py_neuromodulation/nm_coherence.py +251 -205
  44. py_neuromodulation/nm_database.py +149 -0
  45. py_neuromodulation/nm_decode.py +918 -992
  46. py_neuromodulation/nm_define_nmchannels.py +300 -302
  47. py_neuromodulation/nm_features.py +144 -116
  48. py_neuromodulation/nm_filter.py +219 -219
  49. py_neuromodulation/nm_filter_preprocessing.py +79 -91
  50. py_neuromodulation/nm_fooof.py +139 -159
  51. py_neuromodulation/nm_generator.py +45 -37
  52. py_neuromodulation/nm_hjorth_raw.py +52 -73
  53. py_neuromodulation/nm_kalmanfilter.py +71 -58
  54. py_neuromodulation/nm_linelength.py +21 -33
  55. py_neuromodulation/nm_logger.py +66 -0
  56. py_neuromodulation/nm_mne_connectivity.py +149 -112
  57. py_neuromodulation/nm_mnelsl_generator.py +90 -0
  58. py_neuromodulation/nm_mnelsl_stream.py +116 -0
  59. py_neuromodulation/nm_nolds.py +96 -93
  60. py_neuromodulation/nm_normalization.py +173 -214
  61. py_neuromodulation/nm_oscillatory.py +423 -448
  62. py_neuromodulation/nm_plots.py +585 -612
  63. py_neuromodulation/nm_preprocessing.py +83 -0
  64. py_neuromodulation/nm_projection.py +370 -394
  65. py_neuromodulation/nm_rereference.py +97 -95
  66. py_neuromodulation/nm_resample.py +59 -50
  67. py_neuromodulation/nm_run_analysis.py +325 -435
  68. py_neuromodulation/nm_settings.py +289 -68
  69. py_neuromodulation/nm_settings.yaml +244 -0
  70. py_neuromodulation/nm_sharpwaves.py +423 -401
  71. py_neuromodulation/nm_stats.py +464 -480
  72. py_neuromodulation/nm_stream.py +398 -0
  73. py_neuromodulation/nm_stream_abc.py +166 -218
  74. py_neuromodulation/nm_types.py +193 -0
  75. py_neuromodulation/plots/STN_surf.mat +0 -0
  76. py_neuromodulation/plots/Vertices.mat +0 -0
  77. py_neuromodulation/plots/faces.mat +0 -0
  78. py_neuromodulation/plots/grid.mat +0 -0
  79. {py_neuromodulation-0.0.3.dist-info → py_neuromodulation-0.0.5.dist-info}/METADATA +185 -182
  80. py_neuromodulation-0.0.5.dist-info/RECORD +83 -0
  81. {py_neuromodulation-0.0.3.dist-info → py_neuromodulation-0.0.5.dist-info}/WHEEL +1 -2
  82. {py_neuromodulation-0.0.3.dist-info → py_neuromodulation-0.0.5.dist-info/licenses}/LICENSE +21 -21
  83. docs/build/_downloads/09df217f95985497f45d69e2d4bdc5b1/plot_2_example_add_feature.py +0 -68
  84. docs/build/_downloads/3b4900a2b2818ff30362215b76f7d5eb/plot_1_example_BIDS.py +0 -233
  85. docs/build/_downloads/7e92dd2e6cc86b239d14cafad972ae4f/plot_3_example_sharpwave_analysis.py +0 -219
  86. docs/build/_downloads/c2db0bf2b334d541b00662b991682256/plot_6_real_time_demo.py +0 -97
  87. docs/build/_downloads/ce3914826f782cbd1ea8fd024eaf0ac3/plot_5_example_rmap_computing.py +0 -64
  88. docs/build/_downloads/da36848a41e6a3235d91fb7cfb6d59b4/plot_0_first_demo.py +0 -192
  89. docs/build/_downloads/eaa4305c75b19a1e2eea941f742a6331/plot_4_example_gridPointProjection.py +0 -210
  90. docs/build/html/_downloads/09df217f95985497f45d69e2d4bdc5b1/plot_2_example_add_feature.py +0 -68
  91. docs/build/html/_downloads/3b4900a2b2818ff30362215b76f7d5eb/plot_1_example_BIDS.py +0 -239
  92. docs/build/html/_downloads/7e92dd2e6cc86b239d14cafad972ae4f/plot_3_example_sharpwave_analysis.py +0 -219
  93. docs/build/html/_downloads/c2db0bf2b334d541b00662b991682256/plot_6_real_time_demo.py +0 -97
  94. docs/build/html/_downloads/ce3914826f782cbd1ea8fd024eaf0ac3/plot_5_example_rmap_computing.py +0 -64
  95. docs/build/html/_downloads/da36848a41e6a3235d91fb7cfb6d59b4/plot_0_first_demo.py +0 -192
  96. docs/build/html/_downloads/eaa4305c75b19a1e2eea941f742a6331/plot_4_example_gridPointProjection.py +0 -210
  97. docs/source/_build/html/_downloads/09df217f95985497f45d69e2d4bdc5b1/plot_2_example_add_feature.py +0 -76
  98. docs/source/_build/html/_downloads/0d0d0a76e8f648d5d3cbc47da6351932/plot_real_time_demo.py +0 -97
  99. docs/source/_build/html/_downloads/3b4900a2b2818ff30362215b76f7d5eb/plot_1_example_BIDS.py +0 -240
  100. docs/source/_build/html/_downloads/5d73cadc59a8805c47e3b84063afc157/plot_example_BIDS.py +0 -233
  101. docs/source/_build/html/_downloads/7660317fa5a6bfbd12fcca9961457fc4/plot_example_rmap_computing.py +0 -63
  102. docs/source/_build/html/_downloads/7e92dd2e6cc86b239d14cafad972ae4f/plot_3_example_sharpwave_analysis.py +0 -219
  103. docs/source/_build/html/_downloads/839e5b319379f7fd9e867deb00fd797f/plot_example_gridPointProjection.py +0 -210
  104. docs/source/_build/html/_downloads/ae8be19afe5e559f011fc9b138968ba0/plot_first_demo.py +0 -192
  105. docs/source/_build/html/_downloads/b8b06cacc17969d3725a0b6f1d7741c5/plot_example_sharpwave_analysis.py +0 -219
  106. docs/source/_build/html/_downloads/c2db0bf2b334d541b00662b991682256/plot_6_real_time_demo.py +0 -121
  107. docs/source/_build/html/_downloads/c31a86c0b68cb4167d968091ace8080d/plot_example_add_feature.py +0 -68
  108. docs/source/_build/html/_downloads/ce3914826f782cbd1ea8fd024eaf0ac3/plot_5_example_rmap_computing.py +0 -64
  109. docs/source/_build/html/_downloads/da36848a41e6a3235d91fb7cfb6d59b4/plot_0_first_demo.py +0 -189
  110. docs/source/_build/html/_downloads/eaa4305c75b19a1e2eea941f742a6331/plot_4_example_gridPointProjection.py +0 -210
  111. docs/source/auto_examples/plot_0_first_demo.py +0 -189
  112. docs/source/auto_examples/plot_1_example_BIDS.py +0 -240
  113. docs/source/auto_examples/plot_2_example_add_feature.py +0 -76
  114. docs/source/auto_examples/plot_3_example_sharpwave_analysis.py +0 -219
  115. docs/source/auto_examples/plot_4_example_gridPointProjection.py +0 -210
  116. docs/source/auto_examples/plot_5_example_rmap_computing.py +0 -64
  117. docs/source/auto_examples/plot_6_real_time_demo.py +0 -121
  118. docs/source/conf.py +0 -105
  119. examples/plot_0_first_demo.py +0 -189
  120. examples/plot_1_example_BIDS.py +0 -240
  121. examples/plot_2_example_add_feature.py +0 -76
  122. examples/plot_3_example_sharpwave_analysis.py +0 -219
  123. examples/plot_4_example_gridPointProjection.py +0 -210
  124. examples/plot_5_example_rmap_computing.py +0 -64
  125. examples/plot_6_real_time_demo.py +0 -121
  126. packages/realtime_decoding/build/lib/realtime_decoding/__init__.py +0 -4
  127. packages/realtime_decoding/build/lib/realtime_decoding/decoder.py +0 -104
  128. packages/realtime_decoding/build/lib/realtime_decoding/features.py +0 -163
  129. packages/realtime_decoding/build/lib/realtime_decoding/helpers.py +0 -15
  130. packages/realtime_decoding/build/lib/realtime_decoding/run_decoding.py +0 -345
  131. packages/realtime_decoding/build/lib/realtime_decoding/trainer.py +0 -54
  132. packages/tmsi/build/lib/TMSiFileFormats/__init__.py +0 -37
  133. packages/tmsi/build/lib/TMSiFileFormats/file_formats/__init__.py +0 -36
  134. packages/tmsi/build/lib/TMSiFileFormats/file_formats/lsl_stream_writer.py +0 -200
  135. packages/tmsi/build/lib/TMSiFileFormats/file_formats/poly5_file_writer.py +0 -496
  136. packages/tmsi/build/lib/TMSiFileFormats/file_formats/poly5_to_edf_converter.py +0 -236
  137. packages/tmsi/build/lib/TMSiFileFormats/file_formats/xdf_file_writer.py +0 -977
  138. packages/tmsi/build/lib/TMSiFileFormats/file_readers/__init__.py +0 -35
  139. packages/tmsi/build/lib/TMSiFileFormats/file_readers/edf_reader.py +0 -116
  140. packages/tmsi/build/lib/TMSiFileFormats/file_readers/poly5reader.py +0 -294
  141. packages/tmsi/build/lib/TMSiFileFormats/file_readers/xdf_reader.py +0 -229
  142. packages/tmsi/build/lib/TMSiFileFormats/file_writer.py +0 -102
  143. packages/tmsi/build/lib/TMSiPlotters/__init__.py +0 -2
  144. packages/tmsi/build/lib/TMSiPlotters/gui/__init__.py +0 -39
  145. packages/tmsi/build/lib/TMSiPlotters/gui/_plotter_gui.py +0 -234
  146. packages/tmsi/build/lib/TMSiPlotters/gui/plotting_gui.py +0 -440
  147. packages/tmsi/build/lib/TMSiPlotters/plotters/__init__.py +0 -44
  148. packages/tmsi/build/lib/TMSiPlotters/plotters/hd_emg_plotter.py +0 -446
  149. packages/tmsi/build/lib/TMSiPlotters/plotters/impedance_plotter.py +0 -589
  150. packages/tmsi/build/lib/TMSiPlotters/plotters/signal_plotter.py +0 -1326
  151. packages/tmsi/build/lib/TMSiSDK/__init__.py +0 -54
  152. packages/tmsi/build/lib/TMSiSDK/device.py +0 -588
  153. packages/tmsi/build/lib/TMSiSDK/devices/__init__.py +0 -34
  154. packages/tmsi/build/lib/TMSiSDK/devices/saga/TMSi_Device_API.py +0 -1764
  155. packages/tmsi/build/lib/TMSiSDK/devices/saga/__init__.py +0 -34
  156. packages/tmsi/build/lib/TMSiSDK/devices/saga/saga_device.py +0 -1366
  157. packages/tmsi/build/lib/TMSiSDK/devices/saga/saga_types.py +0 -520
  158. packages/tmsi/build/lib/TMSiSDK/devices/saga/xml_saga_config.py +0 -165
  159. packages/tmsi/build/lib/TMSiSDK/error.py +0 -95
  160. packages/tmsi/build/lib/TMSiSDK/sample_data.py +0 -63
  161. packages/tmsi/build/lib/TMSiSDK/sample_data_server.py +0 -99
  162. packages/tmsi/build/lib/TMSiSDK/settings.py +0 -45
  163. packages/tmsi/build/lib/TMSiSDK/tmsi_device.py +0 -111
  164. packages/tmsi/build/lib/__init__.py +0 -4
  165. packages/tmsi/build/lib/apex_sdk/__init__.py +0 -34
  166. packages/tmsi/build/lib/apex_sdk/device/__init__.py +0 -41
  167. packages/tmsi/build/lib/apex_sdk/device/devices/apex/apex_API.py +0 -1009
  168. packages/tmsi/build/lib/apex_sdk/device/devices/apex/apex_API_enums.py +0 -239
  169. packages/tmsi/build/lib/apex_sdk/device/devices/apex/apex_API_structures.py +0 -668
  170. packages/tmsi/build/lib/apex_sdk/device/devices/apex/apex_device.py +0 -1611
  171. packages/tmsi/build/lib/apex_sdk/device/devices/apex/apex_dongle.py +0 -38
  172. packages/tmsi/build/lib/apex_sdk/device/devices/apex/apex_event_reader.py +0 -57
  173. packages/tmsi/build/lib/apex_sdk/device/devices/apex/apex_structures/apex_channel.py +0 -44
  174. packages/tmsi/build/lib/apex_sdk/device/devices/apex/apex_structures/apex_config.py +0 -150
  175. packages/tmsi/build/lib/apex_sdk/device/devices/apex/apex_structures/apex_const.py +0 -36
  176. packages/tmsi/build/lib/apex_sdk/device/devices/apex/apex_structures/apex_impedance_channel.py +0 -48
  177. packages/tmsi/build/lib/apex_sdk/device/devices/apex/apex_structures/apex_info.py +0 -108
  178. packages/tmsi/build/lib/apex_sdk/device/devices/apex/apex_structures/dongle_info.py +0 -39
  179. packages/tmsi/build/lib/apex_sdk/device/devices/apex/measurements/download_measurement.py +0 -77
  180. packages/tmsi/build/lib/apex_sdk/device/devices/apex/measurements/eeg_measurement.py +0 -150
  181. packages/tmsi/build/lib/apex_sdk/device/devices/apex/measurements/impedance_measurement.py +0 -129
  182. packages/tmsi/build/lib/apex_sdk/device/threads/conversion_thread.py +0 -59
  183. packages/tmsi/build/lib/apex_sdk/device/threads/sampling_thread.py +0 -57
  184. packages/tmsi/build/lib/apex_sdk/device/tmsi_channel.py +0 -83
  185. packages/tmsi/build/lib/apex_sdk/device/tmsi_device.py +0 -201
  186. packages/tmsi/build/lib/apex_sdk/device/tmsi_device_enums.py +0 -103
  187. packages/tmsi/build/lib/apex_sdk/device/tmsi_dongle.py +0 -43
  188. packages/tmsi/build/lib/apex_sdk/device/tmsi_event_reader.py +0 -50
  189. packages/tmsi/build/lib/apex_sdk/device/tmsi_measurement.py +0 -118
  190. packages/tmsi/build/lib/apex_sdk/sample_data_server/__init__.py +0 -33
  191. packages/tmsi/build/lib/apex_sdk/sample_data_server/event_data.py +0 -44
  192. packages/tmsi/build/lib/apex_sdk/sample_data_server/sample_data.py +0 -50
  193. packages/tmsi/build/lib/apex_sdk/sample_data_server/sample_data_server.py +0 -136
  194. packages/tmsi/build/lib/apex_sdk/tmsi_errors/error.py +0 -126
  195. packages/tmsi/build/lib/apex_sdk/tmsi_sdk.py +0 -113
  196. packages/tmsi/build/lib/apex_sdk/tmsi_utilities/apex/apex_structure_generator.py +0 -134
  197. packages/tmsi/build/lib/apex_sdk/tmsi_utilities/decorators.py +0 -60
  198. packages/tmsi/build/lib/apex_sdk/tmsi_utilities/logger_filter.py +0 -42
  199. packages/tmsi/build/lib/apex_sdk/tmsi_utilities/singleton.py +0 -42
  200. packages/tmsi/build/lib/apex_sdk/tmsi_utilities/support_functions.py +0 -72
  201. packages/tmsi/build/lib/apex_sdk/tmsi_utilities/tmsi_logger.py +0 -98
  202. py_neuromodulation/nm_EpochStream.py +0 -92
  203. py_neuromodulation/nm_across_patient_decoding.py +0 -927
  204. py_neuromodulation/nm_cohortwrapper.py +0 -435
  205. py_neuromodulation/nm_eval_timing.py +0 -239
  206. py_neuromodulation/nm_features_abc.py +0 -39
  207. py_neuromodulation/nm_stream_offline.py +0 -358
  208. py_neuromodulation/utils/_logging.py +0 -24
  209. py_neuromodulation-0.0.3.dist-info/RECORD +0 -188
  210. py_neuromodulation-0.0.3.dist-info/top_level.txt +0 -5
  211. tests/__init__.py +0 -0
  212. tests/conftest.py +0 -117
  213. tests/test_all_examples.py +0 -10
  214. tests/test_all_features.py +0 -63
  215. tests/test_bispectra.py +0 -70
  216. tests/test_bursts.py +0 -105
  217. tests/test_feature_sampling_rates.py +0 -143
  218. tests/test_fooof.py +0 -16
  219. tests/test_initalization_offline_stream.py +0 -41
  220. tests/test_multiprocessing.py +0 -58
  221. tests/test_nan_values.py +0 -29
  222. tests/test_nm_filter.py +0 -95
  223. tests/test_nm_resample.py +0 -63
  224. tests/test_normalization_settings.py +0 -146
  225. tests/test_notch_filter.py +0 -31
  226. tests/test_osc_features.py +0 -424
  227. tests/test_preprocessing_filter.py +0 -151
  228. tests/test_rereference.py +0 -171
  229. tests/test_sampling.py +0 -57
  230. tests/test_settings_change_after_init.py +0 -76
  231. tests/test_sharpwave.py +0 -165
  232. tests/test_target_channel_add.py +0 -100
  233. tests/test_timing.py +0 -80
@@ -1,102 +0,0 @@
1
- """
2
- (c) 2022 Twente Medical Systems International B.V., Oldenzaal The Netherlands
3
-
4
- Licensed under the Apache License, Version 2.0 (the "License");
5
- you may not use this file except in compliance with the License.
6
- You may obtain a copy of the License at
7
-
8
- http://www.apache.org/licenses/LICENSE-2.0
9
-
10
- Unless required by applicable law or agreed to in writing, software
11
- distributed under the License is distributed on an "AS IS" BASIS,
12
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- See the License for the specific language governing permissions and
14
- limitations under the License.
15
-
16
- ####### # # ##### #
17
- # ## ## #
18
- # # # # # # #
19
- # # # # ##### #
20
- # # # # #
21
- # # # # #
22
- # # # ##### #
23
-
24
- /**
25
- * @file ${file_writer.py}
26
- * @brief File Writer Interface
27
- *
28
- */
29
-
30
-
31
- """
32
-
33
- from enum import Enum
34
- from TMSiSDK.error import TMSiError, TMSiErrorCode
35
-
36
-
37
- class FileFormat(Enum):
38
- none = 0
39
- poly5 = 1
40
- xdf = 2
41
- lsl = 3
42
-
43
-
44
- class FileWriter:
45
- """<FileWriter> implements a file-writer for writing sample-data, captured
46
- during a measurement, to a specific file in a specific data-format.
47
-
48
- Args:
49
- data_format_type : <FileFormat> Specifies the data-format of the file.
50
- This can be poly5, gdf+ or gdf.
51
-
52
- filename : <string> The path and name of the file, into which the
53
- measurement-data must be written.
54
- """
55
-
56
- def __init__(
57
- self, data_format_type, filename, add_ch_locs=False, download=False
58
- ):
59
- if data_format_type == FileFormat.poly5:
60
- from .file_formats.poly5_file_writer import Poly5Writer
61
-
62
- self._data_format_type = data_format_type
63
- self._file_writer = Poly5Writer(filename, download)
64
- elif data_format_type == FileFormat.xdf:
65
- from .file_formats.xdf_file_writer import XdfWriter
66
-
67
- self._data_format_type = data_format_type
68
- self._file_writer = XdfWriter(filename, add_ch_locs)
69
- elif data_format_type == FileFormat.lsl:
70
- from .file_formats.lsl_stream_writer import LSLWriter
71
-
72
- self._data_format_type = data_format_type
73
- self._file_writer = LSLWriter(filename)
74
- else:
75
- print("Unsupported data format")
76
- raise TMSiError(TMSiErrorCode.api_incorrect_argument)
77
-
78
- def open(self, device):
79
- """Opens a file-writer session.
80
-
81
- Must be called BEFORE a measurement is started.
82
-
83
- Links a 'Device' to a 'Filewriter'-instance and prepares for the
84
- measurement that will start.
85
-
86
- In the open-method the file-writer-object will prepare for the receipt
87
- of sample-data from the 'Device' as next:
88
- - Retrieve the configuration (e.g. channel-list, sample_rate) from the 'Device'
89
- to write to the file and to prepare for the receipt of sample-data.
90
- - Register at the 'sample_data_server' for receipt of the sample-data.
91
- - Create a dedicated sampling-thread, which is responsible to
92
- processes during the measurement the incoming sample-data.
93
- """
94
- self._file_writer.open(device)
95
-
96
- def close(self):
97
- """Closes an ongoing file-writer session.
98
-
99
- Must be called AFTER a measurement is stopped.
100
-
101
- """
102
- self._file_writer.close()
@@ -1,2 +0,0 @@
1
- from . import gui
2
- from . import plotters
@@ -1,39 +0,0 @@
1
- '''
2
- (c) 2022 Twente Medical Systems International B.V., Oldenzaal The Netherlands
3
-
4
- Licensed under the Apache License, Version 2.0 (the "License");
5
- you may not use this file except in compliance with the License.
6
- You may obtain a copy of the License at
7
-
8
- http://www.apache.org/licenses/LICENSE-2.0
9
-
10
- Unless required by applicable law or agreed to in writing, software
11
- distributed under the License is distributed on an "AS IS" BASIS,
12
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- See the License for the specific language governing permissions and
14
- limitations under the License.
15
-
16
- ####### # # ##### #
17
- # ## ## #
18
- # # # # # # #
19
- # # # # ##### #
20
- # # # # #
21
- # # # # #
22
- # # # ##### #
23
-
24
- /**
25
- * @file ${__init__.py}
26
- * @brief Initialisation of the TMSiPlotters gui directory classes.
27
- *
28
- */
29
-
30
-
31
- '''
32
-
33
- import sys
34
- from os.path import join, dirname, realpath
35
- Plotters_dir = dirname(realpath(__file__)) # directory of this file
36
- modules_dir = join(Plotters_dir, '...') # directory with all modules
37
- sys.path.append(modules_dir)
38
-
39
- from .plotting_gui import PlottingGUI
@@ -1,234 +0,0 @@
1
- '''
2
- (c) 2022 Twente Medical Systems International B.V., Oldenzaal The Netherlands
3
-
4
- Licensed under the Apache License, Version 2.0 (the "License");
5
- you may not use this file except in compliance with the License.
6
- You may obtain a copy of the License at
7
-
8
- http://www.apache.org/licenses/LICENSE-2.0
9
-
10
- Unless required by applicable law or agreed to in writing, software
11
- distributed under the License is distributed on an "AS IS" BASIS,
12
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- See the License for the specific language governing permissions and
14
- limitations under the License.
15
-
16
- ####### # # ##### #
17
- # ## ## #
18
- # # # # # # #
19
- # # # # ##### #
20
- # # # # #
21
- # # # # #
22
- # # # ##### #
23
-
24
- /**
25
- * @file ${_plotter_gui.py}
26
- * @brief GUI window used by the different plotter instances.
27
- *
28
- */
29
-
30
-
31
- '''
32
-
33
- from PySide2.QtCore import *
34
- from PySide2.QtGui import *
35
- from PySide2.QtWidgets import *
36
-
37
- from pyqtgraph import GraphicsLayoutWidget
38
-
39
-
40
- class Ui_MainWindow(object):
41
- def setupUi(self, MainWindow):
42
- if not MainWindow.objectName():
43
- MainWindow.setObjectName(u"MainWindow")
44
- MainWindow.resize(1134, 704)
45
- self.centralwidget = QWidget(MainWindow)
46
- self.centralwidget.setObjectName(u"centralwidget")
47
- self.gridLayout = QGridLayout(self.centralwidget)
48
- self.gridLayout.setObjectName(u"gridLayout")
49
- self.RealTimePlotWidget = GraphicsLayoutWidget(self.centralwidget)
50
- self.RealTimePlotWidget.setObjectName(u"RealTimePlotWidget")
51
- sizePolicy = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
52
- sizePolicy.setHorizontalStretch(0)
53
- sizePolicy.setVerticalStretch(0)
54
- sizePolicy.setHeightForWidth(self.RealTimePlotWidget.sizePolicy().hasHeightForWidth())
55
- self.RealTimePlotWidget.setSizePolicy(sizePolicy)
56
-
57
- self.gridLayout.addWidget(self.RealTimePlotWidget, 0, 1, 3, 4)
58
-
59
- self.autoscale_button = QPushButton(self.centralwidget)
60
- self.autoscale_button.setObjectName(u"autoscale_button")
61
-
62
- self.gridLayout.addWidget(self.autoscale_button, 3, 3, 1, 1)
63
-
64
- self.increase_time_button = QPushButton(self.centralwidget)
65
- self.increase_time_button.setObjectName(u"increase_time_button")
66
-
67
- self.gridLayout.addWidget(self.increase_time_button, 3, 2, 1, 1)
68
-
69
- self.verticalLayout = QVBoxLayout()
70
- self.verticalLayout.setObjectName(u"verticalLayout")
71
- self.set_range_label = QLabel(self.centralwidget)
72
- self.set_range_label.setObjectName(u"set_range_label")
73
- font = QFont()
74
- font.setBold(True)
75
- font.setWeight(75)
76
- self.set_range_label.setFont(font)
77
-
78
- self.verticalLayout.addWidget(self.set_range_label)
79
-
80
- self.set_range_box = QComboBox(self.centralwidget)
81
- self.set_range_box.addItem("")
82
- self.set_range_box.addItem("")
83
- self.set_range_box.addItem("")
84
- self.set_range_box.addItem("")
85
- self.set_range_box.addItem("")
86
- self.set_range_box.addItem("")
87
- self.set_range_box.addItem("")
88
- self.set_range_box.setObjectName(u"set_range_box")
89
-
90
- self.verticalLayout.addWidget(self.set_range_box)
91
-
92
-
93
- self.gridLayout.addLayout(self.verticalLayout, 3, 4, 1, 1)
94
-
95
- self.gridLayout_2 = QGridLayout()
96
- self.gridLayout_2.setObjectName(u"gridLayout_2")
97
- self.hide_UNI_button = QPushButton(self.centralwidget)
98
- self.hide_UNI_button.setObjectName(u"hide_UNI_button")
99
- self.hide_UNI_button.setMaximumSize(QSize(100, 16777215))
100
- self.hide_UNI_button.setLayoutDirection(Qt.RightToLeft)
101
-
102
- self.gridLayout_2.addWidget(self.hide_UNI_button, 0, 1, 1, 1)
103
-
104
- self.show_BIP_button = QPushButton(self.centralwidget)
105
- self.show_BIP_button.setObjectName(u"show_BIP_button")
106
-
107
- self.gridLayout_2.addWidget(self.show_BIP_button, 1, 0, 1, 1)
108
-
109
- self.show_UNI_button = QPushButton(self.centralwidget)
110
- self.show_UNI_button.setObjectName(u"show_UNI_button")
111
- self.show_UNI_button.setMaximumSize(QSize(100, 16777215))
112
-
113
- self.gridLayout_2.addWidget(self.show_UNI_button, 0, 0, 1, 1)
114
-
115
- self.hide_BIP_button = QPushButton(self.centralwidget)
116
- self.hide_BIP_button.setObjectName(u"hide_BIP_button")
117
- self.hide_BIP_button.setLayoutDirection(Qt.RightToLeft)
118
-
119
- self.gridLayout_2.addWidget(self.hide_BIP_button, 1, 1, 1, 1)
120
-
121
- self.show_AUX_button = QPushButton(self.centralwidget)
122
- self.show_AUX_button.setObjectName(u"show_AUX_button")
123
-
124
- self.gridLayout_2.addWidget(self.show_AUX_button, 2, 0, 1, 1)
125
-
126
- self.show_DIGI_button = QPushButton(self.centralwidget)
127
- self.show_DIGI_button.setObjectName(u"show_DIGI_button")
128
-
129
- self.gridLayout_2.addWidget(self.show_DIGI_button, 3, 0, 1, 1)
130
-
131
- self.hide_AUX_button = QPushButton(self.centralwidget)
132
- self.hide_AUX_button.setObjectName(u"hide_AUX_button")
133
- self.hide_AUX_button.setLayoutDirection(Qt.RightToLeft)
134
-
135
- self.gridLayout_2.addWidget(self.hide_AUX_button, 2, 1, 1, 1)
136
-
137
- self.hide_DIGI_button = QPushButton(self.centralwidget)
138
- self.hide_DIGI_button.setObjectName(u"hide_DIGI_button")
139
- self.hide_DIGI_button.setLayoutDirection(Qt.RightToLeft)
140
-
141
- self.gridLayout_2.addWidget(self.hide_DIGI_button, 3, 1, 1, 1)
142
-
143
-
144
- self.gridLayout.addLayout(self.gridLayout_2, 2, 0, 1, 1)
145
-
146
- self.decrease_time_button = QPushButton(self.centralwidget)
147
- self.decrease_time_button.setObjectName(u"decrease_time_button")
148
-
149
- self.gridLayout.addWidget(self.decrease_time_button, 3, 1, 1, 1)
150
-
151
- self.channel_list_groupbox = QGroupBox(self.centralwidget)
152
- self.channel_list_groupbox.setObjectName(u"channel_list_groupbox")
153
- sizePolicy1 = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Expanding)
154
- sizePolicy1.setHorizontalStretch(0)
155
- sizePolicy1.setVerticalStretch(0)
156
- sizePolicy1.setHeightForWidth(self.channel_list_groupbox.sizePolicy().hasHeightForWidth())
157
- self.channel_list_groupbox.setSizePolicy(sizePolicy1)
158
- self.channel_list_groupbox.setMinimumSize(QSize(100, 0))
159
- self.channel_list_groupbox.setMaximumSize(QSize(400, 16777215))
160
- font1 = QFont()
161
- font1.setBold(False)
162
- font1.setWeight(50)
163
- self.channel_list_groupbox.setFont(font1)
164
-
165
- self.gridLayout.addWidget(self.channel_list_groupbox, 0, 0, 1, 1)
166
-
167
- self.horizontalLayout = QHBoxLayout()
168
- self.horizontalLayout.setObjectName(u"horizontalLayout")
169
- self.enable_filter_button = QPushButton(self.centralwidget)
170
- self.enable_filter_button.setObjectName(u"enable_filter_button")
171
-
172
- self.horizontalLayout.addWidget(self.enable_filter_button)
173
-
174
- self.disable_filter_button = QPushButton(self.centralwidget)
175
- self.disable_filter_button.setObjectName(u"disable_filter_button")
176
-
177
- self.horizontalLayout.addWidget(self.disable_filter_button)
178
-
179
-
180
- self.gridLayout.addLayout(self.horizontalLayout, 3, 0, 1, 1)
181
-
182
- self.table_live_impedance = QTableWidget(self.centralwidget)
183
- self.table_live_impedance.setObjectName(u"table_live_impedance")
184
- sizePolicy2 = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Preferred)
185
- sizePolicy2.setHorizontalStretch(0)
186
- sizePolicy2.setVerticalStretch(0)
187
- sizePolicy2.setHeightForWidth(self.table_live_impedance.sizePolicy().hasHeightForWidth())
188
- self.table_live_impedance.setSizePolicy(sizePolicy2)
189
- self.table_live_impedance.setMinimumSize(QSize(220, 0))
190
- self.table_live_impedance.setMaximumSize(QSize(220, 16777215))
191
-
192
- self.gridLayout.addWidget(self.table_live_impedance, 0, 5, 3, 1)
193
-
194
- MainWindow.setCentralWidget(self.centralwidget)
195
- self.menubar = QMenuBar(MainWindow)
196
- self.menubar.setObjectName(u"menubar")
197
- self.menubar.setGeometry(QRect(0, 0, 1134, 21))
198
- MainWindow.setMenuBar(self.menubar)
199
- self.statusbar = QStatusBar(MainWindow)
200
- self.statusbar.setObjectName(u"statusbar")
201
- MainWindow.setStatusBar(self.statusbar)
202
-
203
- self.retranslateUi(MainWindow)
204
-
205
- QMetaObject.connectSlotsByName(MainWindow)
206
- # setupUi
207
-
208
- def retranslateUi(self, MainWindow):
209
- MainWindow.setWindowTitle(QCoreApplication.translate("MainWindow", u"MainWindow", None))
210
- self.autoscale_button.setText(QCoreApplication.translate("MainWindow", u"Auto Scale", None))
211
- self.increase_time_button.setText(QCoreApplication.translate("MainWindow", u"Increase time range", None))
212
- self.set_range_label.setText(QCoreApplication.translate("MainWindow", u"<html><head/><body><p>Set Range ('\u00b5Volt')</p></body></html>", None))
213
- self.set_range_box.setItemText(0, QCoreApplication.translate("MainWindow", u"1", None))
214
- self.set_range_box.setItemText(1, QCoreApplication.translate("MainWindow", u"20", None))
215
- self.set_range_box.setItemText(2, QCoreApplication.translate("MainWindow", u"50", None))
216
- self.set_range_box.setItemText(3, QCoreApplication.translate("MainWindow", u"100", None))
217
- self.set_range_box.setItemText(4, QCoreApplication.translate("MainWindow", u"250", None))
218
- self.set_range_box.setItemText(5, QCoreApplication.translate("MainWindow", u"1000", None))
219
- self.set_range_box.setItemText(6, QCoreApplication.translate("MainWindow", u"10000", None))
220
-
221
- self.hide_UNI_button.setText(QCoreApplication.translate("MainWindow", u"Hide UNI", None))
222
- self.show_BIP_button.setText(QCoreApplication.translate("MainWindow", u"Show BIP", None))
223
- self.show_UNI_button.setText(QCoreApplication.translate("MainWindow", u"Show UNI", None))
224
- self.hide_BIP_button.setText(QCoreApplication.translate("MainWindow", u"Hide BIP", None))
225
- self.show_AUX_button.setText(QCoreApplication.translate("MainWindow", u"Show AUX", None))
226
- self.show_DIGI_button.setText(QCoreApplication.translate("MainWindow", u"Show DIGI", None))
227
- self.hide_AUX_button.setText(QCoreApplication.translate("MainWindow", u"Hide AUX", None))
228
- self.hide_DIGI_button.setText(QCoreApplication.translate("MainWindow", u"Hide DIGI", None))
229
- self.decrease_time_button.setText(QCoreApplication.translate("MainWindow", u"Decrease time range", None))
230
- self.channel_list_groupbox.setTitle(QCoreApplication.translate("MainWindow", u"Channel list", None))
231
- self.enable_filter_button.setText(QCoreApplication.translate("MainWindow", u"Enable filter", None))
232
- self.disable_filter_button.setText(QCoreApplication.translate("MainWindow", u"Disable filter", None))
233
- # retranslateUi
234
-