explorepy 1.8.2__tar.gz → 4.1.0__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 (165) hide show
  1. {explorepy-1.8.2 → explorepy-4.1.0}/.bumpversion.cfg +2 -4
  2. explorepy-4.1.0/AUTHORS.rst +11 -0
  3. {explorepy-1.8.2 → explorepy-4.1.0}/CHANGELOG.rst +53 -2
  4. {explorepy-1.8.2 → explorepy-4.1.0}/MANIFEST.in +1 -1
  5. explorepy-4.1.0/PKG-INFO +207 -0
  6. {explorepy-1.8.2 → explorepy-4.1.0}/README.rst +6 -6
  7. {explorepy-1.8.2 → explorepy-4.1.0}/docs/conf.py +4 -9
  8. explorepy-4.1.0/docs/explore_legacy_devices.rst +11 -0
  9. {explorepy-1.8.2 → explorepy-4.1.0}/docs/index.rst +1 -0
  10. explorepy-4.1.0/docs/installation.rst +153 -0
  11. explorepy-4.1.0/docs/logo.jpg +0 -0
  12. {explorepy-1.8.2 → explorepy-4.1.0}/docs/reference/explorepy.rst +0 -5
  13. {explorepy-1.8.2 → explorepy-4.1.0}/docs/requirements.txt +4 -4
  14. {explorepy-1.8.2 → explorepy-4.1.0}/docs/usage.rst +103 -107
  15. explorepy-4.1.0/pyproject.toml +62 -0
  16. {explorepy-1.8.2 → explorepy-4.1.0}/setup.cfg +1 -3
  17. explorepy-4.1.0/src/explorepy/BLEClient.py +237 -0
  18. explorepy-4.1.0/src/explorepy/BTClient.py +62 -0
  19. {explorepy-1.8.2 → explorepy-4.1.0}/src/explorepy/__init__.py +7 -9
  20. explorepy-4.1.0/src/explorepy/_exceptions.py +70 -0
  21. {explorepy-1.8.2 → explorepy-4.1.0}/src/explorepy/bt_mock_client.py +4 -8
  22. {explorepy-1.8.2 → explorepy-4.1.0}/src/explorepy/cli.py +2 -26
  23. {explorepy-1.8.2 → explorepy-4.1.0}/src/explorepy/command.py +8 -0
  24. {explorepy-1.8.2 → explorepy-4.1.0}/src/explorepy/explore.py +194 -123
  25. {explorepy-1.8.2 → explorepy-4.1.0}/src/explorepy/filters.py +12 -5
  26. {explorepy-1.8.2 → explorepy-4.1.0}/src/explorepy/log_config.py +1 -1
  27. {explorepy-1.8.2 → explorepy-4.1.0}/src/explorepy/packet.py +276 -57
  28. explorepy-4.1.0/src/explorepy/parser.py +405 -0
  29. explorepy-4.1.0/src/explorepy/serial_client.py +178 -0
  30. {explorepy-1.8.2 → explorepy-4.1.0}/src/explorepy/settings_manager.py +57 -7
  31. explorepy-4.1.0/src/explorepy/stream_processor.py +614 -0
  32. {explorepy-1.8.2 → explorepy-4.1.0}/src/explorepy/tools.py +365 -185
  33. explorepy-4.1.0/src/explorepy.egg-info/PKG-INFO +207 -0
  34. {explorepy-1.8.2 → explorepy-4.1.0}/src/explorepy.egg-info/SOURCES.txt +19 -58
  35. {explorepy-1.8.2 → explorepy-4.1.0}/src/explorepy.egg-info/requires.txt +6 -4
  36. {explorepy-1.8.2 → explorepy-4.1.0}/tests/conftest.py +36 -12
  37. explorepy-4.1.0/tests/res/in/device_info_ble +0 -0
  38. explorepy-4.1.0/tests/res/in/device_info_v2_2 +0 -0
  39. explorepy-4.1.0/tests/res/in/eeg16_ble +0 -0
  40. explorepy-4.1.0/tests/res/in/eeg98_ble +0 -0
  41. explorepy-4.1.0/tests/res/in/orn_2 +0 -0
  42. explorepy-4.1.0/tests/res/in/trigger_in +0 -0
  43. explorepy-4.1.0/tests/res/out/device_info_ble_out.txt +16 -0
  44. explorepy-4.1.0/tests/res/out/device_info_v2_2_out.txt +12 -0
  45. explorepy-4.1.0/tests/res/out/eeg16_ble_out.txt +9 -0
  46. {explorepy-1.8.2 → explorepy-4.1.0}/tests/res/out/eeg32_out.txt +2 -1
  47. {explorepy-1.8.2 → explorepy-4.1.0}/tests/res/out/eeg94_out.txt +2 -1
  48. explorepy-4.1.0/tests/res/out/eeg98_ble_out.txt +9 -0
  49. {explorepy-1.8.2 → explorepy-4.1.0}/tests/res/out/eeg98_out.txt +2 -1
  50. {explorepy-1.8.2 → explorepy-4.1.0}/tests/res/out/eeg98_usbc_out.txt +2 -1
  51. {explorepy-1.8.2 → explorepy-4.1.0}/tests/res/out/eeg98_usbc_out_2.txt +2 -1
  52. {explorepy-1.8.2 → explorepy-4.1.0}/tests/res/out/env_out.txt +1 -1
  53. explorepy-4.1.0/tests/res/out/orn_2_out.txt +10 -0
  54. {explorepy-1.8.2 → explorepy-4.1.0}/tests/res/out/push_marker_out.txt +2 -1
  55. explorepy-4.1.0/tests/res/out/trigger_in_out.txt +9 -0
  56. {explorepy-1.8.2 → explorepy-4.1.0}/tests/test_packet.py +203 -40
  57. explorepy-1.8.2/AUTHORS.rst +0 -9
  58. explorepy-1.8.2/PKG-INFO +0 -343
  59. explorepy-1.8.2/docs/installation.rst +0 -168
  60. explorepy-1.8.2/docs/logo.png +0 -0
  61. explorepy-1.8.2/lib/linux/BTSerialPortBinding.cpp +0 -197
  62. explorepy-1.8.2/lib/linux/BTSerialPortBinding.h +0 -95
  63. explorepy-1.8.2/lib/linux/DeviceINQ.cpp +0 -173
  64. explorepy-1.8.2/lib/linux/ExploreException.h +0 -85
  65. explorepy-1.8.2/lib/linux/ExploreExceptionConstants.h +0 -22
  66. explorepy-1.8.2/lib/linux/ExploreSDK.h +0 -70
  67. explorepy-1.8.2/lib/linux/exploresdk.py +0 -364
  68. explorepy-1.8.2/lib/linux/exploresearch.i +0 -14
  69. explorepy-1.8.2/lib/linux/serialport.i +0 -37
  70. explorepy-1.8.2/lib/linux/swig_interface.i +0 -34
  71. explorepy-1.8.2/lib/linux/swig_interface_wrap.cxx +0 -11444
  72. explorepy-1.8.2/lib/mac/BTSerialPortBinding.h +0 -94
  73. explorepy-1.8.2/lib/mac/BTSerialPortBinding.mm +0 -155
  74. explorepy-1.8.2/lib/mac/BluetoothDeviceResources.h +0 -32
  75. explorepy-1.8.2/lib/mac/BluetoothDeviceResources.mm +0 -20
  76. explorepy-1.8.2/lib/mac/BluetoothWorker.h +0 -64
  77. explorepy-1.8.2/lib/mac/BluetoothWorker.mm +0 -341
  78. explorepy-1.8.2/lib/mac/DeviceINQ.mm +0 -123
  79. explorepy-1.8.2/lib/mac/ExploreException.h +0 -87
  80. explorepy-1.8.2/lib/mac/ExploreExceptionConstants.h +0 -22
  81. explorepy-1.8.2/lib/mac/ExploreSDK.h +0 -70
  82. explorepy-1.8.2/lib/mac/_exploresdk.so +0 -0
  83. explorepy-1.8.2/lib/mac/btScan +0 -0
  84. explorepy-1.8.2/lib/mac/btScan.mm +0 -69
  85. explorepy-1.8.2/lib/mac/create_shared_lib.sh +0 -48
  86. explorepy-1.8.2/lib/mac/exploresdk.py +0 -308
  87. explorepy-1.8.2/lib/mac/exploresearch.i +0 -14
  88. explorepy-1.8.2/lib/mac/json.hpp +0 -20561
  89. explorepy-1.8.2/lib/mac/pipe.c +0 -1233
  90. explorepy-1.8.2/lib/mac/pipe.h +0 -265
  91. explorepy-1.8.2/lib/mac/serialport.i +0 -41
  92. explorepy-1.8.2/lib/mac/swig_interface.i +0 -37
  93. explorepy-1.8.2/lib/mac/swig_interface_wrap.cxx +0 -10704
  94. explorepy-1.8.2/lib/windows/BTSerialPortBinding.cpp +0 -211
  95. explorepy-1.8.2/lib/windows/BTSerialPortBinding.h +0 -93
  96. explorepy-1.8.2/lib/windows/BluetoothHelpers.cpp +0 -63
  97. explorepy-1.8.2/lib/windows/BluetoothHelpers.h +0 -12
  98. explorepy-1.8.2/lib/windows/DeviceINQ.cpp +0 -304
  99. explorepy-1.8.2/lib/windows/ExploreException.h +0 -108
  100. explorepy-1.8.2/lib/windows/ExploreExceptionConstants.h +0 -43
  101. explorepy-1.8.2/lib/windows/ExploreSDK.h +0 -31
  102. explorepy-1.8.2/lib/windows/ex.py +0 -8
  103. explorepy-1.8.2/lib/windows/exploresdk.py +0 -378
  104. explorepy-1.8.2/lib/windows/exploresearch.i +0 -26
  105. explorepy-1.8.2/lib/windows/serialport.i +0 -33
  106. explorepy-1.8.2/lib/windows/swig_interface.i +0 -40
  107. explorepy-1.8.2/lib/windows/swig_interface_wrap.cxx +0 -11896
  108. explorepy-1.8.2/lib/windows/winsock_wrapper.h +0 -9
  109. explorepy-1.8.2/setup.py +0 -129
  110. explorepy-1.8.2/src/explorepy/_exceptions.py +0 -42
  111. explorepy-1.8.2/src/explorepy/btcpp.py +0 -175
  112. explorepy-1.8.2/src/explorepy/dashboard/dashboard.py +0 -761
  113. explorepy-1.8.2/src/explorepy/dashboard/templates/index.html +0 -117
  114. explorepy-1.8.2/src/explorepy/dashboard/theme.yaml +0 -21
  115. explorepy-1.8.2/src/explorepy/exploresdk.py +0 -368
  116. explorepy-1.8.2/src/explorepy/parser.py +0 -210
  117. explorepy-1.8.2/src/explorepy/stream_processor.py +0 -356
  118. explorepy-1.8.2/src/explorepy.egg-info/PKG-INFO +0 -343
  119. explorepy-1.8.2/src/explorepy.egg-info/not-zip-safe +0 -1
  120. explorepy-1.8.2/tests/__init__.py +0 -0
  121. {explorepy-1.8.2 → explorepy-4.1.0}/.cookiecutterrc +0 -0
  122. {explorepy-1.8.2 → explorepy-4.1.0}/.coveragerc +0 -0
  123. {explorepy-1.8.2 → explorepy-4.1.0}/.editorconfig +0 -0
  124. {explorepy-1.8.2 → explorepy-4.1.0}/CONTRIBUTING.rst +0 -0
  125. {explorepy-1.8.2 → explorepy-4.1.0}/LICENSE +0 -0
  126. {explorepy-1.8.2 → explorepy-4.1.0}/docs/authors.rst +0 -0
  127. {explorepy-1.8.2 → explorepy-4.1.0}/docs/changelog.rst +0 -0
  128. {explorepy-1.8.2 → explorepy-4.1.0}/docs/contributing.rst +0 -0
  129. {explorepy-1.8.2 → explorepy-4.1.0}/docs/readme.rst +0 -0
  130. {explorepy-1.8.2 → explorepy-4.1.0}/docs/reference/index.rst +0 -0
  131. {explorepy-1.8.2 → explorepy-4.1.0}/docs/spelling_wordlist.txt +0 -0
  132. {explorepy-1.8.2 → explorepy-4.1.0}/src/explorepy/bt_mock_server.py +0 -0
  133. {explorepy-1.8.2 → explorepy-4.1.0}/src/explorepy/debug.py +0 -0
  134. {explorepy-1.8.2 → explorepy-4.1.0}/src/explorepy.egg-info/dependency_links.txt +0 -0
  135. {explorepy-1.8.2 → explorepy-4.1.0}/src/explorepy.egg-info/entry_points.txt +0 -0
  136. {explorepy-1.8.2 → explorepy-4.1.0}/src/explorepy.egg-info/top_level.txt +0 -0
  137. {explorepy-1.8.2 → explorepy-4.1.0}/tests/README.md +0 -0
  138. {explorepy-1.8.2/src/explorepy/dashboard → explorepy-4.1.0/tests}/__init__.py +0 -0
  139. {explorepy-1.8.2 → explorepy-4.1.0}/tests/res/in/calibration_info +0 -0
  140. {explorepy-1.8.2 → explorepy-4.1.0}/tests/res/in/calibration_info_usbc +0 -0
  141. {explorepy-1.8.2 → explorepy-4.1.0}/tests/res/in/cmd_rcv +0 -0
  142. {explorepy-1.8.2 → explorepy-4.1.0}/tests/res/in/cmd_stat +0 -0
  143. {explorepy-1.8.2 → explorepy-4.1.0}/tests/res/in/device_info +0 -0
  144. {explorepy-1.8.2 → explorepy-4.1.0}/tests/res/in/device_info_v2 +0 -0
  145. {explorepy-1.8.2 → explorepy-4.1.0}/tests/res/in/disconnect +0 -0
  146. {explorepy-1.8.2 → explorepy-4.1.0}/tests/res/in/eeg32 +0 -0
  147. {explorepy-1.8.2 → explorepy-4.1.0}/tests/res/in/eeg94 +0 -0
  148. {explorepy-1.8.2 → explorepy-4.1.0}/tests/res/in/eeg98 +0 -0
  149. {explorepy-1.8.2 → explorepy-4.1.0}/tests/res/in/eeg98_usbc +0 -0
  150. {explorepy-1.8.2 → explorepy-4.1.0}/tests/res/in/eeg98_usbc_2 +0 -0
  151. {explorepy-1.8.2 → explorepy-4.1.0}/tests/res/in/env +0 -0
  152. {explorepy-1.8.2 → explorepy-4.1.0}/tests/res/in/orn +0 -0
  153. {explorepy-1.8.2 → explorepy-4.1.0}/tests/res/in/orn_matrix.txt +0 -0
  154. {explorepy-1.8.2 → explorepy-4.1.0}/tests/res/in/push_marker +0 -0
  155. {explorepy-1.8.2 → explorepy-4.1.0}/tests/res/out/axis_and_angle.txt +0 -0
  156. {explorepy-1.8.2 → explorepy-4.1.0}/tests/res/out/calibration_info_out.txt +0 -0
  157. {explorepy-1.8.2 → explorepy-4.1.0}/tests/res/out/calibration_info_usbc_out.txt +0 -0
  158. {explorepy-1.8.2 → explorepy-4.1.0}/tests/res/out/cmd_rcv_out.txt +0 -0
  159. {explorepy-1.8.2 → explorepy-4.1.0}/tests/res/out/cmd_stat_out.txt +0 -0
  160. {explorepy-1.8.2 → explorepy-4.1.0}/tests/res/out/device_info_out.txt +0 -0
  161. {explorepy-1.8.2 → explorepy-4.1.0}/tests/res/out/device_info_v2_out.txt +0 -0
  162. {explorepy-1.8.2 → explorepy-4.1.0}/tests/res/out/disconnect_out.txt +0 -0
  163. {explorepy-1.8.2 → explorepy-4.1.0}/tests/res/out/eeg98_out_fake.txt +0 -0
  164. {explorepy-1.8.2 → explorepy-4.1.0}/tests/res/out/orn_out.txt +0 -0
  165. {explorepy-1.8.2 → explorepy-4.1.0}/tox.ini +0 -0
@@ -1,11 +1,9 @@
1
1
  [bumpversion]
2
- current_version = 1.8.2
2
+ current_version = 4.1.0
3
3
  commit = False
4
4
  tag = False
5
5
 
6
- [bumpversion:file:setup.py]
7
- search = version='{current_version}'
8
- replace = version='{new_version}'
6
+ [bumpversion:file:pyproject.toml]
9
7
 
10
8
  [bumpversion:file:README.rst]
11
9
  search = v{current_version}.
@@ -0,0 +1,11 @@
1
+
2
+ Authors
3
+ =======
4
+
5
+
6
+ * Salman Rahman - `salman@mentalab.com <mailto:salman@mentalab.com>`_
7
+ * Andrea Escartin
8
+ * Sonja Stefani - `sonja@mentalab.com <mailto:sonja@mentalab.com>`_
9
+ * Mohamad Atayi
10
+ * Masoome Fazelian
11
+ * Alex Platt
@@ -2,13 +2,64 @@
2
2
  Changelog
3
3
  =========
4
4
 
5
+ 4.1.0 (31.3.2025)
6
+ ------------------
7
+ * Improve bluetooth connection UX
8
+ * Add more data in IMU packet
9
+ * Improve USB streaming
10
+
11
+
12
+ 4.0.0 (14.3.2025)
13
+ ------------------
14
+ * Deprecate support for Explore legacy devices
15
+ * Improve binary file conversion and stream parser algorithm
16
+
17
+
18
+ 3.2.1 (31.1.2025)
19
+ ------------------
20
+ * Hotfix impedance calculation
21
+
22
+
23
+ 3.2.0 (31.1.2025)
24
+ ------------------
25
+ * Fix critical bug in settings file modification
26
+ * Improve BT communication
27
+ * Disable impedance on fresh connection
28
+ * Introduce new sampling rates
29
+
30
+
31
+ 3.1.0 (8.11.2024)
32
+ ------------------
33
+ * Add USB streaming support
34
+ * Improve BT communication
35
+
36
+
37
+ 3.0.1 (28.08.2024)
38
+ ------------------
39
+ * Improve device connectivity
40
+ * Add text marker support
41
+
42
+
43
+ 3.0.0 (7.6.2024)
44
+ ------------------
45
+ * Improve Mac OSX support
46
+ * Add Support for Explore Pro
47
+ * Robust data parsing
48
+
49
+
50
+ 2.0.0 (5.1.2024)
51
+ ------------------
52
+ * Add Mac OSX support
53
+ * Remove browser based visualization support
54
+ * Update build script for docs
55
+
56
+
5
57
  1.8.2 (28.8.2023)
6
58
  ------------------
7
59
  * Improve explore mock device
8
60
  * Add yaml file for RTD build
9
61
 
10
62
 
11
-
12
63
  1.8.1 (11.7.2023)
13
64
  ------------------
14
65
  * Bugfix record data
@@ -27,7 +78,7 @@ Changelog
27
78
 
28
79
  1.7.0 (21.12.2022)
29
80
  ------------------
30
- * Add suppport for new explore+ 32 ch device
81
+ * Add support for new explore+ 32 ch device
31
82
  * Sorted timestamps in CSV
32
83
  * Settings file to preserve experiment settings
33
84
 
@@ -17,4 +17,4 @@ recursive-include lib *
17
17
 
18
18
  include tox.ini
19
19
 
20
- global-exclude *.py[cod] __pycache__ *.dylib
20
+ global-exclude *.py[co] __pycache__ *.dylib
@@ -0,0 +1,207 @@
1
+ Metadata-Version: 2.4
2
+ Name: explorepy
3
+ Version: 4.1.0
4
+ Author-email: MentaLab Hub <support@mentab.org>
5
+ License: MIT
6
+ Project-URL: Homepage, https://github.com/Mentalab-hub/explorepy
7
+ Classifier: Development Status :: 5 - Production/Stable
8
+ Classifier: Intended Audience :: Developers
9
+ Classifier: Intended Audience :: Science/Research
10
+ Classifier: License :: OSI Approved :: MIT License
11
+ Classifier: Programming Language :: Python :: 3
12
+ Classifier: Programming Language :: Python :: 3.10
13
+ Classifier: Programming Language :: Python :: 3.11
14
+ Classifier: Programming Language :: Python :: 3.12
15
+ Classifier: Operating System :: OS Independent
16
+ Classifier: Operating System :: MacOS
17
+ Classifier: Operating System :: Microsoft :: Windows
18
+ Classifier: Operating System :: POSIX :: Linux
19
+ Classifier: Topic :: Scientific/Engineering :: Information Analysis
20
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
21
+ Description-Content-Type: text/markdown
22
+ License-File: LICENSE
23
+ License-File: AUTHORS.rst
24
+ Requires-Dist: numpy
25
+ Requires-Dist: scipy
26
+ Requires-Dist: pyEDFlib==0.1.38
27
+ Requires-Dist: click==7.1.2
28
+ Requires-Dist: appdirs==1.4.3
29
+ Requires-Dist: sentry_sdk==2.8.0
30
+ Requires-Dist: mne
31
+ Requires-Dist: eeglabio
32
+ Requires-Dist: pandas
33
+ Requires-Dist: pyserial
34
+ Requires-Dist: pyyaml
35
+ Requires-Dist: bleak==0.22.3
36
+ Requires-Dist: pylsl
37
+ Requires-Dist: numba
38
+ Provides-Extra: test
39
+ Requires-Dist: pytest==6.2.5; extra == "test"
40
+ Requires-Dist: pytest-mock==3.10.0; extra == "test"
41
+ Requires-Dist: pytest-html==3.2.0; extra == "test"
42
+ Requires-Dist: flake8==4.0.1; extra == "test"
43
+ Requires-Dist: isort==5.10.1; extra == "test"
44
+ Dynamic: license-file
45
+
46
+ .. image:: logo.png
47
+ :scale: 100 %
48
+ :align: left
49
+
50
+
51
+ .. start-badges
52
+
53
+ |docs| |version| |wheel| |supported-versions| |commits-since|
54
+
55
+ .. |docs| image:: https://readthedocs.org/projects/explorepy/badge/?style=flat
56
+ :target: https://readthedocs.org/projects/explorepy
57
+ :alt: Documentation Status
58
+
59
+
60
+ .. |version| image:: https://img.shields.io/pypi/v/explorepy.svg
61
+ :alt: PyPI Package latest release
62
+ :target: https://pypi.org/project/explorepy
63
+
64
+
65
+ .. |commits-since| image:: https://img.shields.io/github/commits-since/Mentalab-hub/explorepy/v4.1.0.svg
66
+ :alt: Commits since latest release
67
+ :target: https://github.com/Mentalab-hub/explorepy/compare/v4.1.0...master
68
+
69
+
70
+ .. |wheel| image:: https://img.shields.io/pypi/wheel/explorepy.svg
71
+ :alt: PyPI Wheel
72
+ :target: https://pypi.org/project/explorepy
73
+
74
+ .. |supported-versions| image:: https://img.shields.io/pypi/pyversions/explorepy.svg
75
+ :alt: Supported versions
76
+ :target: https://pypi.org/project/explorepy
77
+
78
+ .. |supported-implementations| image:: https://img.shields.io/pypi/implementation/explorepy.svg
79
+ :alt: Supported implementations
80
+ :target: https://pypi.org/project/explorepy
81
+
82
+
83
+ .. end-badges
84
+
85
+ =========================
86
+ ``explorepy`` overview
87
+ =========================
88
+
89
+ ``explorepy`` is an open-source Python API designed to collect and process ExG data using Mentalab's Explore device. Amongst other things, ``explorepy`` provides the following features:
90
+
91
+ * Real-time streaming of ExG, orientation and environmental data.
92
+ * Real-time visualization of ExG, orientation and environmental data.
93
+ * Data recording in CSV and BDF+ formats.
94
+ * Integration with LabStreaming Layer.
95
+ * Electrode impedance measurements.
96
+ * Explore device configuration.
97
+
98
+ Quick installation
99
+ ==================
100
+ For Windows users, the best way to install ``explorepy`` is to download the latest ``explorepy`` version from the `release page <https://github.com/Mentalab-hub/explorepy/releases>`_. Please note that dependencies will install automatically from the release page.
101
+
102
+ For other operating systems, or to build the package manually on Windows, please refer to the information below.
103
+
104
+
105
+ Requirements
106
+ ------------
107
+
108
+ * Python 3.10 to Python 3.12.
109
+ * Visual Studio 2015 community edition (Windows only. For package building).
110
+ * Bluetooth header files (Linux only. Use: ``sudo apt-get install libbluetooth-dev``).
111
+
112
+
113
+ Detailed installation instructions can be found on the `installation page <https://explorepy.readthedocs.io/en/latest/installation.html>`_.
114
+
115
+ To install ``explorepy`` from PyPI run:
116
+ ::
117
+
118
+ pip install explorepy
119
+
120
+
121
+ To install the latest development version (git must be installed before running this command):
122
+ ::
123
+
124
+ pip install git+https://github.com/Mentalab-hub/explorepy
125
+
126
+
127
+ Get started
128
+ ===========
129
+
130
+ CLI command
131
+ -----------
132
+ To check ``explorepy`` is running use:
133
+ ::
134
+ explorepy acquire -n Explore_XXXX
135
+
136
+ For help, use:
137
+ ::
138
+ explorepy -h
139
+
140
+
141
+ Python code
142
+ -----------
143
+
144
+ In Python you can connect to the Explore device and print data using:
145
+
146
+ ::
147
+
148
+ import explorepy
149
+ explorer = explorepy.Explore()
150
+ explorer.connect(device_name="Explore_XXXX") # Put your device Bluetooth name
151
+ explorer.acquire()
152
+
153
+ You can also visualize the data in real-time.
154
+
155
+ ::
156
+
157
+ import explorepy
158
+ explorer = explorepy.Explore()
159
+ explorer.connect(device_name="Explore_XXXX") # Put your device Bluetooth name
160
+
161
+ Documentation
162
+ =============
163
+
164
+ For full API documentation, visit: https://explorepy.readthedocs.io/.
165
+
166
+ Troubleshooting
167
+ ===============
168
+ If you are having problems, please check the `troubleshooting <https://explorepy.readthedocs.io/en/latest/installation.html#troubleshooting>`_
169
+ section of the documentation.
170
+
171
+ If you are still having problems, send us your error log via Sentry (note: Explorepy will send the log
172
+ automatically once you have provided permission), or send us the log file via email to support@mentalab.com. The log file is usually found under:
173
+
174
+ * Windows: ``<Windows Drive>:\Users\<USER_NAME>\AppData\Local\mentalab\explorepy\Logs\explorepy.log``
175
+ * Ubuntu: ``/home/<USER_NAME>/.cache/explorepy/log/explorepy.log``
176
+ * Mac OS: ``/Users/<USER_NAME>/Library/Logs/explorepy/explorepy.log``
177
+
178
+ You can also create a new issue in the GitHub repository.
179
+
180
+ Authors
181
+ =======
182
+ - `Mohamad Atayi`_
183
+ - `Salman Rahman`_
184
+ - `Andrea Escartin`_
185
+ - `Sonja Stefani`_
186
+ - `Alex Platt`_
187
+ - `Andreas Gutsche`_
188
+ - `Masooma Fazelian`_
189
+ - `Philipp Jakovleski`_
190
+ - `Florian Sesser`_
191
+ - `Sebastian Herberger`_
192
+
193
+
194
+ .. _Mohamad Atayi: https://github.com/bmeatayi
195
+ .. _Salman Rahman: https://github.com/salman2135
196
+ .. _Andrea Escartin: https://github.com/andrea-escartin
197
+ .. _Sonja Stefani: https://github.com/SonjaSt
198
+ .. _Alex Platt: https://github.com/Nujanauss
199
+ .. _Andreas Gutsche: https://github.com/andyman410
200
+ .. _Masooma Fazelian: https://github.com/fazelian
201
+ .. _Philipp Jakovleski: https://github.com/philippjak
202
+ .. _Florian Sesser : https://github.com/hacklschorsch
203
+ .. _Sebastian Herberger: https://github.com/SHerberger
204
+
205
+ License
206
+ =======
207
+ This project is licensed under the `MIT <https://github.com/Mentalab-hub/explorepy/blob/master/LICENSE>`_ license. You can reach us at contact@mentalab.com.
@@ -1,6 +1,6 @@
1
1
  .. image:: logo.png
2
2
  :scale: 100 %
3
- :align: center
3
+ :align: left
4
4
 
5
5
 
6
6
  .. start-badges
@@ -17,9 +17,9 @@
17
17
  :target: https://pypi.org/project/explorepy
18
18
 
19
19
 
20
- .. |commits-since| image:: https://img.shields.io/github/commits-since/Mentalab-hub/explorepy/v1.8.2.svg
20
+ .. |commits-since| image:: https://img.shields.io/github/commits-since/Mentalab-hub/explorepy/v4.1.0.svg
21
21
  :alt: Commits since latest release
22
- :target: https://github.com/Mentalab-hub/explorepy/compare/v1.8.2...master
22
+ :target: https://github.com/Mentalab-hub/explorepy/compare/v4.1.0...master
23
23
 
24
24
 
25
25
  .. |wheel| image:: https://img.shields.io/pypi/wheel/explorepy.svg
@@ -54,13 +54,13 @@ Quick installation
54
54
  ==================
55
55
  For Windows users, the best way to install ``explorepy`` is to download the latest ``explorepy`` version from the `release page <https://github.com/Mentalab-hub/explorepy/releases>`_. Please note that dependencies will install automatically from the release page.
56
56
 
57
- For other operating systems, or to build the package manually on Windows, please refer to the information below. MAC OSX is currently not supported.
57
+ For other operating systems, or to build the package manually on Windows, please refer to the information below.
58
58
 
59
59
 
60
60
  Requirements
61
61
  ------------
62
62
 
63
- * Python 3.7 to Python 3.11.
63
+ * Python 3.10 to Python 3.12.
64
64
  * Visual Studio 2015 community edition (Windows only. For package building).
65
65
  * Bluetooth header files (Linux only. Use: ``sudo apt-get install libbluetooth-dev``).
66
66
 
@@ -124,7 +124,7 @@ If you are having problems, please check the `troubleshooting <https://explorepy
124
124
  section of the documentation.
125
125
 
126
126
  If you are still having problems, send us your error log via Sentry (note: Explorepy will send the log
127
- automatically once you have provided permission), or send us the log file via email to contact@mentalab.com. The log file is usually found under:
127
+ automatically once you have provided permission), or send us the log file via email to support@mentalab.com. The log file is usually found under:
128
128
 
129
129
  * Windows: ``<Windows Drive>:\Users\<USER_NAME>\AppData\Local\mentalab\explorepy\Logs\explorepy.log``
130
130
  * Ubuntu: ``/home/<USER_NAME>/.cache/explorepy/log/explorepy.log``
@@ -4,8 +4,7 @@ import os
4
4
  import sys
5
5
 
6
6
  sys.path.insert(0, os.path.abspath('../src/explorepy/'))
7
- autodoc_mock_imports = ['bluetooth', 'pylsl', 'bokeh', 'tornado',
8
- 'explorepy.exploresdk', 'explorepy._exploresdk']
7
+ autodoc_mock_imports = ['bluetooth', 'pylsl', 'bokeh', 'tornado']
9
8
 
10
9
  extensions = [
11
10
  'sphinx.ext.autodoc',
@@ -26,22 +25,18 @@ if os.getenv('SPELLCHECK'):
26
25
  source_suffix = '.rst'
27
26
  master_doc = 'index'
28
27
  project = 'explorepy'
29
- year = '2018-2022'
28
+ year = '2018-2025'
30
29
  author = 'Mentalab GmbH.'
31
30
  copyright = '{0}, {1}'.format(year, author)
32
- version = release = '1.8.2'
33
-
31
+ version = release = '4.1.0'
34
32
  pygments_style = 'trac'
35
33
  templates_path = ['.']
36
34
  extlinks = {
37
35
  'issue': ('https://github.com/Mentalab-hub/explorepy/issues/%s', '#'),
38
36
  'pr': ('https://github.com/Mentalab-hub/explorepy/pull/%s', 'PR #'),
39
37
  }
40
- # on_rtd is whether we are on readthedocs.org
41
- on_rtd = os.environ.get('READTHEDOCS', None) == 'True'
42
38
 
43
- if not on_rtd: # only set the theme if we're building docs locally
44
- html_theme = 'sphinx_rtd_theme'
39
+ html_theme = 'sphinx_rtd_theme'
45
40
 
46
41
  html_use_smartypants = True
47
42
  html_last_updated_fmt = '%b %d, %Y'
@@ -0,0 +1,11 @@
1
+ ============
2
+ Legacy device and explorepy support
3
+ ============
4
+
5
+ Starting from explorepy 4.0.0, latest version of explorepy will only support Explore Pro devices, meaning users will not be able to use legacy devices with explorepy 4.0.0 and onwards.
6
+ If you want to install explorepy for legacy devices, please use the following command for windows and linux.
7
+ .. code-block:: bash
8
+
9
+ pip install explorepy==3.2.1
10
+
11
+ To install explorepy 3.2.1 in Mac, please contact support@mentalab.com.
@@ -12,6 +12,7 @@ Contents
12
12
  contributing
13
13
  authors
14
14
  changelog
15
+ explore_legacy_devices
15
16
 
16
17
  Indices and tables
17
18
  ==================
@@ -0,0 +1,153 @@
1
+ ============
2
+ Installation
3
+ ============
4
+
5
+ Minimal Requirements
6
+ --------------------
7
+ * Python 3.12 and upwards. We recommend using Python 3.12.
8
+ * Microsoft Build Tools for Visual Studio 2019 (only Windows)
9
+ * 6GB RAM (minimum 1GB *free* RAM during the session)
10
+ * Intel i5 or higher (2x2.5GHz) CPU
11
+
12
+ Recommended Requirements
13
+ ------------------------
14
+ * Python 3.12
15
+ * Microsoft Build Tools for Visual Studio 2019 (only Windows)
16
+ * 8GB RAM
17
+ * Intel i7 or higher CPU
18
+
19
+ How to install
20
+ --------------
21
+
22
+ Option 1: Installing via installer file (basic)
23
+ """""""""""""""""""""""""""""""""""""""""""""""
24
+
25
+ Windows and Mac
26
+ ^^^^^^^^^^^^^^^
27
+
28
+ *This option is best for users who only intend to use functionalities offered by* ``explorepy`` *via a graphical user interface*
29
+
30
+ For example, if you want to quickly visualize and record data and don't need the command line interface or to use it in your own Python script, use this option.
31
+
32
+ If you intend to call ``explorepy`` from the command line or a Python script (e.g. from an experiment script), install ``explorepy`` via Anaconda/pip instead.
33
+
34
+ For Windows and Mac, the standalone desktop software ExploreDesktop can be installed using the installer files uploaded to the
35
+ `release page <https://github.com/Mentalab-hub/explore-desktop-release/releases/latest/>`_. Please note that the dependencies will be installed automatically and bundled locally with the installed software.
36
+
37
+
38
+ Option 2: Installing from Python Package Index (PyPI) and pip (advanced)
39
+ """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
40
+
41
+
42
+ .. note::
43
+
44
+ Explore legacy device support is **deprecated** in ExplorePy. See the documentation on :doc:`explore_legacy_devices`.
45
+
46
+
47
+ *To install explorepy for any Python version below 3.10, please contact support@mentalab.com*
48
+
49
+ *This option is best for users who intend to include* ``explorepy`` *functionalities in their own Python scripts or use it from the command line.*
50
+
51
+ For an overview of ``explorepy`` commands, click `here <https://explorepy.readthedocs.io/en/latest/usage.html#command-line-interface>`_.
52
+
53
+ Windows
54
+ ^^^^^^^
55
+
56
+ To install the ``explorepy`` API and all its dependencies using pip on Windows:
57
+
58
+ 1. Install Anaconda (or any other Python distribution; these instructions pertain to Anaconda only). Download and run the `Anaconda installer for windows <https://www.anaconda.com/download/success>`_.
59
+ 2. Install `Microsoft Build Tools for Visual Studio 2019 <https://visualstudio.microsoft.com/thank-you-downloading-visual-studio/?sku=BuildTools&rel=16>`_. Select *Desktop development with C++* in the workloads tab. Make sure that *MSVCv142 - VS 2019 C++ x64/x86 build tools* and the latest version of *Windows 10 SDK* are checked.
60
+ 3. Open the Anaconda command prompt.
61
+ 4. We recommend using a conda environment. To do this:
62
+
63
+ a. In the Anaconda command prompt: ``conda create -n myenv python=3.12``
64
+ b. Activate the conda environment: ``conda activate myenv``
65
+
66
+ 5. Upgrade your pip: ``python -m pip install --upgrade pip``
67
+ 6. Install liblsl: ``conda install -c conda-forge liblsl``
68
+ 7. Run ``pip install explorepy`` to install ``explorepy`` from PyPI.
69
+
70
+ Ubuntu
71
+ ^^^^^^
72
+ 1. From the terminal, run these commands one by one: ``sudo apt-get install libbluetooth-dev`` and ``sudo apt-get install build-essential``.
73
+ 2. We recommend installing Anaconda. Download and installer `Anaconda<https://www.anaconda.com/download>`/Miniconda/.
74
+ 3. We recommend using a virtual environment in Conda. To do this:
75
+
76
+ a. In the Anaconda command prompt: ``conda create -n myenv python=3.12``
77
+ b. Activate the conda environment: ``conda activate myenv``
78
+
79
+ 4. Upgrade your pip: ``python -m pip install --upgrade pip``
80
+ 5. Install liblsl: ``conda install -c conda-forge liblsl``
81
+ 6. Run ``pip install explorepy`` to install ``explorepy`` from PyPI.
82
+ 7. From the terminal, run: ``sudo apt install libxcb-cursor0``
83
+
84
+ Set up USB streaming in Linux
85
+ +++++++++++++++++++++++++++++
86
+
87
+ a. Set up ``udev`` rules for appropiate permission to ``/dev/ttyACM*`` in Linux
88
+
89
+ *Steps to Execute the Udev Script Manually*
90
+
91
+ 1. Create a file named ``setup_udev_rule.sh`` and include the following script
92
+
93
+ ::
94
+
95
+ #!/bin/bash
96
+
97
+ RULE='SUBSYSTEM=="tty", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="5740", SYMLINK+="stm_virtual_com", MODE="0666"'
98
+
99
+ echo "Creating udev rule..."
100
+ echo "$RULE" | sudo tee /etc/udev/rules.d/99-stm-virtual-com.rules > /dev/null
101
+
102
+ sudo udevadm control --reload-rules && sudo udevadm trigger
103
+ echo "udev rule has been created successfully!"
104
+ echo "You can access your device at /dev/$SYMLINK_NAME when it is connected."
105
+
106
+ 2. Make the ``setup_udev_rule.sh`` executable ::
107
+
108
+ chmod +x setup_udev_rule.sh
109
+
110
+ 3. Execute the script ::
111
+
112
+ ./setup_udev_rule.sh
113
+
114
+ *To remove the udev rule when no longer required* ::
115
+
116
+ sudo rm /etc/udev/rules.d/99-stm-virtual-com.rules
117
+
118
+
119
+ b. Alternate method: Temporarily granting appropriate permissions to ``/dev/ttyACM*``
120
+
121
+
122
+ 1. Identify the device (ttyACM0, ttyACM1, ttyACM2, etc) in ``/dev`` directory
123
+
124
+
125
+ 2. Execute this command in the terminal (replace * with appropiate id) ::
126
+
127
+ chmod 666 /dev/ttyACM*
128
+
129
+ Mac
130
+ ^^^
131
+ 1. Install ``XCode`` from the Mac App store. For this, you may need to upgrade to the latest version of MacOS. For older versions of MacOS, find compatible versions of ``XCode`` `here <https://en.wikipedia.org/wiki/Xcode>`_. All old ``XCode`` versions are available `here <https://developer.apple.com/download/more/>`_.
132
+ 2. Accept the license agreement: ``sudo xcodebuild -license``.
133
+ 3. It is best to install Anaconda. Download and run the `Anaconda installer for Mac <https://www.anaconda.com/download/success>`_. For older versions of MacOS, compatible version of Anaconda can be found in `this table <https://docs.continuum.io/anaconda/install/#old-os>`_ and downloaded `here <https://repo.anaconda.com/archive/index.html>`_.
134
+ 4. We recommend using a conda environment.
135
+
136
+ a. In the Anaconda command prompt: ``conda create -n myenv python=3.10``
137
+ b. Activate the conda environment: ``conda activate myenv``
138
+
139
+ 5. Upgrade your pip: ``python -m pip install --upgrade pip``
140
+ 6. Install liblsl: ``conda install -c conda-forge liblsl``
141
+ 7. Run ``pip install explorepy`` to install ``explorepy`` from PyPI.
142
+ 8. Connect your Explore device from the Bluetooth menu and run your Python script.
143
+
144
+
145
+ Quick test
146
+ ----------
147
+
148
+ *Note: If you installed the graphical user interface ExploreDesktop as outlined above, explorepy won't be available from the command line.*
149
+
150
+ * Open the Anaconda command prompt.
151
+ * Activate the virtual environment that you made before installing explorepy: ``conda activate myenv``
152
+ * Run ``explorepy acquire -n DEVICE-NAME``
153
+ * To stop the command execution, press ``Ctrl+C``
Binary file
@@ -27,11 +27,6 @@ Parser
27
27
  :members:
28
28
  :undoc-members:
29
29
 
30
- Dashboard
31
- *********
32
- .. autoclass:: dashboard.dashboard.Dashboard
33
- :members:
34
-
35
30
 
36
31
  Additional tools
37
32
  ****************
@@ -1,7 +1,5 @@
1
1
  appdirs==1.4.3
2
- bokeh==2.2.3
3
2
  click==7.1.2
4
- Jinja2==3.0.0
5
3
  mne==0.24.1
6
4
  numpy==1.24.4
7
5
  pandas==1.3.4
@@ -10,5 +8,7 @@ pylsl==1.16.1
10
8
  PyYAML==6.0.1
11
9
  PyYAML==6.0.1
12
10
  scipy==1.11.1
13
- sentry_sdk==1.19.1
14
- tornado==6.3.2
11
+ tornado==6.4.2
12
+ sentry_sdk==2.8.0
13
+ sphinx-rtd-theme==1.3.0
14
+ sphinx==7.2.4