From 71213dab7f67435de4ced95f92fc0a58d83e1253 Mon Sep 17 00:00:00 2001 From: lommytea Date: Sat, 31 Aug 2024 14:28:09 -0400 Subject: [PATCH 1/5] Adding tutorial for the XR-3 Adapter that works with DSI-24 --- source/WearableSensingxVario.rst | 39 ++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 source/WearableSensingxVario.rst diff --git a/source/WearableSensingxVario.rst b/source/WearableSensingxVario.rst new file mode 100644 index 0000000..b1262e7 --- /dev/null +++ b/source/WearableSensingxVario.rst @@ -0,0 +1,39 @@ +.. _WearableSensing's DSI24 and Compatibility with Varjo's XR-3 (Potentially other models as well): + +############################################################################################### +Wearable Sensing's DSI-24 and Compatibility with Varjo's XR-3 (Potentially other models as well) +############################################################################################### + +This tutorial will demonstrate how to adapt the Varjo XR-3 to the DSI-24. +The `DSI-24 `_ is `Wearable Sensing's `_ dry electrode EEG system. +While the XR-3 is `Varjo's `_ most immersive VR experience with photorealistic visual fidelity. + +1. First off you will need to 3D print the following `model<>`_ to attach to the `XR-3 `_ allow for compatibility. + +After you have printed the adapter you will need to remove Varjo's deafult headpiece. + +2. Remove the cushion from the headpiece, you will then see 4 screw holes. + +3. Unscrew the 4 screws that connect the "headstrap" to the `XR-3 `_. + +4. Carefully unhook the "headstrap" from the `XR-3 `_. There are three hooks on each side of the `XR-3 `_. + +After removing the headstrap from the `XR-3 `_ we will need to attach the 3D printed adapter to the `XR-3 `_. + +5. Carefully hook the 3D printed adatper to the `XR-3 `_. Be careful as the hooks are fragile as they are a small weakly supported piece. It is recommended that you do not screw in the screws before hooking everything in first. + +6. Once the adapter is hooked in, screw in the screws to secure the adapter to the `XR-3 `_. + +7. Use the front provided straps from `DSI-24 `_ to attach the `DSI-24 `_ to the adapter. The strap provided by Wearable Sensing for the Meta Quest will also work. + +8. You will also need to have additional straps to secure the DSI-24 on the sides. + +9. Apply `Velcro's Sleek and Thin `_ to the 3D printed part so that you can attach the cushion back on. + +10. Attach the cushion back on to the `XR-3 `_. + +11. It is also recommended that you add some foam between the `XR-3 `_ and the 3D printed piece to prevent any light from coming into the view area. An alternative would be to drape a piece of clothing over the seams. + +Now that you have a working DSI-24 with the XR-3 you can now use PhysioLabXR to integrate the two hardware devices in software. + +For example, using \ No newline at end of file From 045f936569f2ff71ea8c27e3952529eb609249b5 Mon Sep 17 00:00:00 2001 From: lommytea Date: Sat, 31 Aug 2024 14:28:47 -0400 Subject: [PATCH 2/5] Added FFT step as well as increased readability. Removed unnecessary video and gif files added in previous commit --- source/WearableSensingxVario.rst | 40 ++++++++++++++++++++++++++++++-- 1 file changed, 38 insertions(+), 2 deletions(-) diff --git a/source/WearableSensingxVario.rst b/source/WearableSensingxVario.rst index b1262e7..506303c 100644 --- a/source/WearableSensingxVario.rst +++ b/source/WearableSensingxVario.rst @@ -8,22 +8,55 @@ This tutorial will demonstrate how to adapt the Varjo XR-3 to the DSI-24. The `DSI-24 `_ is `Wearable Sensing's `_ dry electrode EEG system. While the XR-3 is `Varjo's `_ most immersive VR experience with photorealistic visual fidelity. -1. First off you will need to 3D print the following `model<>`_ to attach to the `XR-3 `_ allow for compatibility. +1. First off you will need to 3D print the following `model `_ to attach to the `XR-3 `_ allow for compatibility. +The model can be found here: `STL File `_ After you have printed the adapter you will need to remove Varjo's deafult headpiece. 2. Remove the cushion from the headpiece, you will then see 4 screw holes. +.. raw :: html + +

+ +

+ + 3. Unscrew the 4 screws that connect the "headstrap" to the `XR-3 `_. +.. raw :: html + +

+ +

+ 4. Carefully unhook the "headstrap" from the `XR-3 `_. There are three hooks on each side of the `XR-3 `_. +.. raw :: html + +

+ +

+ After removing the headstrap from the `XR-3 `_ we will need to attach the 3D printed adapter to the `XR-3 `_. 5. Carefully hook the 3D printed adatper to the `XR-3 `_. Be careful as the hooks are fragile as they are a small weakly supported piece. It is recommended that you do not screw in the screws before hooking everything in first. +.. raw :: html + +

+ +

+ + 6. Once the adapter is hooked in, screw in the screws to secure the adapter to the `XR-3 `_. +.. raw :: html + +

+ +

+ 7. Use the front provided straps from `DSI-24 `_ to attach the `DSI-24 `_ to the adapter. The strap provided by Wearable Sensing for the Meta Quest will also work. 8. You will also need to have additional straps to secure the DSI-24 on the sides. @@ -36,4 +69,7 @@ After removing the headstrap from the `XR-3 `_ +- `How to connect the XR-3 to PhysioLabXR using Unity `_ From fdf30a8af6690eabb6bd604922d3357b12541d15 Mon Sep 17 00:00:00 2001 From: lommytea Date: Tue, 3 Sep 2024 18:03:24 -0400 Subject: [PATCH 3/5] Adding file to the tabs so that the doc can be accessed from the main document. --- source/WearableSensingxVario.rst | 2 +- source/index.rst | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/source/WearableSensingxVario.rst b/source/WearableSensingxVario.rst index 506303c..d4bfd59 100644 --- a/source/WearableSensingxVario.rst +++ b/source/WearableSensingxVario.rst @@ -1,4 +1,4 @@ -.. _WearableSensing's DSI24 and Compatibility with Varjo's XR-3 (Potentially other models as well): +.. _WearableSensing's DSI24 and Compatibility with Varjo's XR-3: ############################################################################################### Wearable Sensing's DSI-24 and Compatibility with Varjo's XR-3 (Potentially other models as well) diff --git a/source/index.rst b/source/index.rst index ec4b6a3..26a6c70 100644 --- a/source/index.rst +++ b/source/index.rst @@ -328,6 +328,7 @@ Other Topics DataStreamAPI/ScriptStream DataStreamAPI/StreamVideoAudioScreenCapture WearableSensingDSI24 + WearableSensingxVario .. toctree:: :maxdepth: 1 From ec4200b90e8ef8a98ffda9117c954bab63e352c7 Mon Sep 17 00:00:00 2001 From: LommyTea Date: Mon, 9 Dec 2024 16:38:49 -0500 Subject: [PATCH 4/5] Updated index to include videos demonstrating how to install PhysioLabXR via executable, PIP and through source. Created a new Wearable Sensing page to reflect the integration. --- source/Contribute.rst | 7 + source/WearableSensingDSI24.rst | 225 ++++-------------------- source/WearableSensingDSI24Script.rst | 165 +++++++++++++++++ source/archive/DataStreamAPIArchive.rst | 6 +- source/index.rst | 24 ++- 5 files changed, 234 insertions(+), 193 deletions(-) create mode 100644 source/WearableSensingDSI24Script.rst diff --git a/source/Contribute.rst b/source/Contribute.rst index 3666688..62facfd 100644 --- a/source/Contribute.rst +++ b/source/Contribute.rst @@ -23,6 +23,13 @@ We look forward to seeing your contributions and helping to improve **PhysioLab\ Run from source ********************* +.. raw :: html + +

+ +

+ + To get started with PhysioLab\ :sup:`XR` development, you will want to run the app from source. The following section will guide you through the process of running the app from source. diff --git a/source/WearableSensingDSI24.rst b/source/WearableSensingDSI24.rst index 304e365..564ad1f 100644 --- a/source/WearableSensingDSI24.rst +++ b/source/WearableSensingDSI24.rst @@ -1,228 +1,77 @@ .. _Wearable Sensing Stream: -################################################## +############################################ Stream data from Wearable Sensing's DSI-24 -################################################## +############################################ This tutorial will demonstrate how to connect the DSI-24 to your computer and PhysioLab\ :sup:`XR`. The `DSI-24 `_ is `Wearable Sensing's `_ dry electrode EEG system. -This tutorial will be primarily focused on the Windows platform +This tutorial will be primarily focused on the Windows platform. +This tutorial currently only works with the latest stable developmental version of PhysioLabXR. If you would like to know how to download the latest stable version of PhysioLabXR, you can check that out +`Here `_. -1. Turn on the `DSI-24 `_. +If you would like to be more hands on and work with the data from DSI-24 as well as implement other functions from the DSI-24 you can check out `this `_. -2. Go to Device Manager. +1. Ensure you have the batteries installed the DIS-24. -3. Expand the Bluetooth section. +2. Turn on the `DSI-24 `_ by double clicking on the power button. -4. Disable Intel(R) Wireless Bluetooth(R) or whatever is your default Bluetooth driver. +3. Go to Device Manager on your computer. -.. figure:: media/WearableSensing_BluetoothDisable.gif - :width: 800 - :align: center - :alt: Turning off native Bluetooth +4. Expand the Bluetooth section. -5. Plug in the Bluetooth adapter provided by `Wearable Sensing's `_. +5. Disable Intel(R) Wireless Bluetooth(R) or your default Bluetooth driver (You can reenable at anytime, however if left enabled the DSI-24 will not work correctly). -6. Go to Bluetooth settings. +6. Plug in the Bluetooth adapter provided by `Wearable Sensing's `_ to any USB port. -7. Scroll down to device settings. +7. Go to Bluetooth settings. -8. Turn the Bluetooth devices discovery setting from Default to Advanced. (If you are on Windows 10, this step can be ignored). +8. Scroll down to device settings. -5. Plug in the Bluetooth adapter provided by Wearable Sensing +9. Turn the Bluetooth devices discovery setting from Default to Advanced. (If you are on Windows 10, this step can be ignored). -6. Go to Bluetooth settings +10. Plug in the Bluetooth adapter provided by Wearable Sensing. -7. Scroll down to device settings +11. Go to Bluetooth settings. -8. Turn the Bluetooth devices discovery setting from Default to Advanced. (If you are on Windows 10, this step can be ignored) +12. Scroll down to device settings. -.. figure:: media/WearableSensing_BluetoothDeviceDiscovery.gif - :width: 800 - :align: center - :alt: Turning on Bluetooth Device Discovery +13. Turn the Bluetooth devices discovery setting from Default to Advanced. (If you are on Windows 10, this step can be ignored).z +14. Connect the `DSI-24 `_ to your device as if you would connect a mouse or headphones. (Should be named DSI24-{*serial number*}). -9. Connect the `DSI-24 `_ to your device as if you would connect a mouse or headphones. (Should be named DSI24-{*serial number*}). +15. Go back to Bluetooth Settings. -10. Go back to Bluetooth Settings. +16. Scroll down to more Related Settings. -11. Scroll down to more Related Settings. +17. Click on more Bluetooth Settings. -12. Click on more Bluetooth Settings. +18. Click on COM Ports and make note of the COM port number that has the name: DSI24-{*serial number*} "Bluetooth Serial Port". -13. Click on COM Ports and make note of the COM port number that has the name: DSI24-{*serial number*} "Bluetooth Serial Port". +19. Connect the DSI-24 to your device as if you would connect a mouse or headphones. (Should be named DSI24-{*serial number*}). It may state that the device isn't connected, this is *normal*. -14. Connect the DSI-24 to your device as if you would connect a mouse or headphones. (Should be named DSI24-{*serial number*}) +20. Go back to Bluetooth Settings. -15. Go back to Bluetooth Settings +21. Scroll down to more Related Settings. -16. Scroll down to more Related Settings +22. Click on more Bluetooth Settings. -17. Click on more Bluetooth Settings +23. Click on COM Ports and make note of the COM port number that has the name: DSI24-{*serial number*} "Bluetooth Serial Port". -18. Click on COM Ports and make note of the COM port number that has the name: DSI24-{*serial number*} "Bluetooth Serial Port" +24. Now we can open PhysioLabXR. -.. figure:: media/WearableSensing_BluetoothCOMPort.gif - :width: 800 - :align: center - :alt: Finding the COM Port +25. In the Stream input line, you can type out "DSI24". This should open up the DSI-24 interface where the EEG data will be displayed as well an options window +where you can input the COM Port as well as whether or not you would like to test the impedance of the electrodes to make sure they are the correct fit. If the options window +does not show you can click on the far right button to open it. -19. Open PhysioLab\ :sup:`XR`. +26. Once you have configured your options all you have to do is press the green play button on the bottom of the main window. By right clicking on the graph in the main window you can decide on how you want the data to be displayed. +There are also filters you can choose to add to the data by clicking on the blue button that is the second button from the bottom. -20. Go to `Script Tab `_. - -21. Click *Locate* and find the WearableSensingScript.py. - -The script can be downloaded from `WearableSensingScript.py `_. - -.. code-block:: python - - from pylsl import local_clock - from physiolabxr.scripting.RenaScript import RenaScript - from physiolabxr.thirdparty.WearableSensing.DSI_py3 import * - import numpy as np - import sys - from physiolabxr.utils.buffers import DataBuffer - - #Creating a data buffer with the DataBuffer class - data_buffer = DataBuffer() - - is_first_time = True - time_offset = 0 # time offset for the first packet to the local_clock() - @SampleCallback - def ExampleSampleCallback_Signals(headsetPtr, packetTime, userData): - #This is the function that will be called every time a new packet is received - global data_buffer - global is_first_time - global time_offset - - #Grab the headset by using a pointer - h = Headset(headsetPtr) - #Get the signal from each channel and format it so that it can be created into an array - new_data = np.array(['%+08.2f' % (ch.GetSignal()) for ch in h.Channels()]) - #Reshapes the array into a 24x1 array so that it can be inputted into the data_buffer - new_data = new_data.reshape(24,1) - #Rearrange new_data to fit with desired output format - new_data = new_data[[9, 10, 3, 2, 4, 17, 18, 7, 1, 5, 11, 22, 12, 21, 8, 0, 6, 13, 14, 20, 23, 19, 15, 16], :] - #Get the time of the packet as a temporary solution to timestamps - if is_first_time: - time_offset = local_clock() - float(packetTime) - is_first_time = False - - t = [float(packetTime) + time_offset] - if new_data.shape[1] != len(t): - print('Data and timestamp mismatch') - print(new_data.shape) - print(len(t)) - - #Create a dictionary with the stream name, data, and timestamps - new_data_dict = { - 'stream_name': 'DSI-24', - 'frames': new_data, - 'timestamps': t - } - #Update the data buffer with the new data - data_buffer.update_buffer(new_data_dict) - class DSI24(RenaScript): - def __init__(self, *args, **kwargs): - """ - Please do not edit this function - """ - super().__init__(*args, **kwargs) - - def init(self, arg = ''): - #Create a headset object - self.headset = Headset() - #Set the message callback to ExampleMessageCallback - self.headset.SetMessageCallback(ExampleMessageCallback) - #Retrieves the command line arguments - args = getattr(sys, 'argv', ['']) - #Set the default port to the first command line argument based on the parameter provided by user - default_port = self.params['COM Port'] - #Connect the headset - self.headset.Connect(default_port) - #Start the data acquisition based on the parameter provided by user - if arg.lower().startswith('imp'): - #Currently not used - self.headset.SetSampleCallback(ExampleSampleCallback_Impedances, 0) - self.headset.StartImpedanceDriver() - else: - #Set the sample callback to ExampleSampleCallback_Signals - self.headset.SetSampleCallback(ExampleSampleCallback_Signals, 0) - if len(arg.strip()): self.headset.SetDefaultReference(arg, True) - #Start the data acquisition - self.headset.StartBackgroundAcquisition() - - - def loop(self): - #Called every loop based on the user's chosen frequency - global data_buffer - #If the data buffer has data, then set the output to the data buffer - if len(data_buffer.keys()) > 0: - self.set_output(stream_name = 'DSI-24', data = data_buffer.get_data('DSI-24'), timestamp = data_buffer.get_timestamps('DSI-24')) - #Clear the data buffer - data_buffer.clear_stream_buffer_data('DSI-24') - - def cleanup(self): - #Called when the script is stopped - global data_buffer - global is_first_time - global time_offset - #Stop the data acquisition - self.headset.StopBackgroundAcquisition() - #Disconnect the headset - time_offset = 0 - is_first_time = True - self.headset.Disconnect() - data_buffer.clear_buffer() - -22. *Add* an output and name it "DSI-24". - -23. Change the number of channels to 24. - -24. *Add* a **Parameter Widget** to the script by clicking on the + sign. - -25. Change the name of the parameter to *COM Port* and switch the type of input to "str" so that we can input the COM port. - -26. Input the name of the COM port that you noted earlier. This will allow for PhysioLabXR to connect to the DSI-24. - -27. Press *Run*. - -.. figure:: media/WearableSensing_Scripting.gif - :width: 800 - :align: center - :alt: Running in PhysioLabXR - -Now the data stream is available as an LSL stream named DSI-24. - -28. To view the data stream, go to the **Stream Tab**. - -29. Input *DSI-24* in the Add Stream box and press the *Add Widget* button. - -30. Click the *Start Button* to start data stream. - -It is recommended that you change some of the settings for your stream. You can follow the steps `here `_ to change the settings. -For this tutorial, we added a Butterworth High Pass Filter with a cutoff frequency of 0.01 Hz, Nominal Sampling Rate of 250 and Group Channels Constant Offset to 50 by first pressing on the Gear icon and then on the top Default Group name. - -.. figure:: media/WearableSensing_Stream.gif - :width: 800 - :align: center - :alt: Viewing the stream on the Stream Tab - -31. To see the FFT of the signals from the `DSI-24 `_ right-click on the stream and select *FFT*. - -.. figure:: media/WearableSensing_FFT.gif - :width: 800 - :align: center - :alt: Showing FFT of data stream +**Note** Occasionally it may say that it cannot connect to the port, you should retry to connect by stopping the program with the red button on the bottom and rerunning it. If that does not work, +we recommend you reconnect the device by disconnecting it in the settings and reconnecting. Now that you have the data streaming: check out these docs: - :ref: `How to save the data `_ - :ref: `How to run a classification model on the data `_ - :ref: `Need help connecting the DSI-24 with Varjo's XR-3? `_ - - - - diff --git a/source/WearableSensingDSI24Script.rst b/source/WearableSensingDSI24Script.rst new file mode 100644 index 0000000..564ce7f --- /dev/null +++ b/source/WearableSensingDSI24Script.rst @@ -0,0 +1,165 @@ +.. _Wearable Sensing Stream Old: + +###################################################### +Stream data from Wearable Sensing's DSI-24 Via Script +###################################################### + +1. Open PhysioLab\ :sup:`XR`. + +2. Go to `Script Tab `_. + +3. Click *Locate* and find the WearableSensingScript.py. + +The script can be downloaded from `WearableSensingScript.py `_. + +.. code-block:: python + + from pylsl import local_clock + from physiolabxr.scripting.RenaScript import RenaScript + from physiolabxr.thirdparty.WearableSensing.DSI_py3 import * + import numpy as np + import sys + from physiolabxr.utils.buffers import DataBuffer + + #Creating a data buffer with the DataBuffer class + data_buffer = DataBuffer() + + is_first_time = True + time_offset = 0 # time offset for the first packet to the local_clock() + @SampleCallback + def example_sample_callback_signals(headsetPtr, packetTime, userData): + global is_first_time + global time_offset + global dsi24_data_socket + + # This function is called when a new packet is received + h = Headset(headsetPtr) + new_data = np.array(['%+08.2f' % (ch.GetSignal()) for ch in h.Channels()]) + new_data = new_data.reshape(24, 1) + new_data = new_data[[9, 10, 3, 2, 4, 17, 18, 7, 1, 5, 11, 22, 12, 21, 8, 0, 6, 13, 14, 20, 23, 19, 16, 15], :] + + # Calculate the time offset on the first packet + if is_first_time: + time_offset = local_clock() - float(packetTime) + is_first_time = False + + t = [float(packetTime) + time_offset] + if new_data.shape[1] != len(t): + print('Data and timestamp mismatch') + print(new_data.shape) + print(len(t)) + + #Create a dictionary with the stream name, data, and timestamps + new_data_dict = { + 'stream_name': 'DSI-24', + 'frames': new_data, + 'timestamps': t + } + #Update the data buffer with the new data + data_buffer.update_buffer(new_data_dict) + class DSI24(RenaScript): + def __init__(self, *args, **kwargs): + """ + Please do not edit this function + """ + super().__init__(*args, **kwargs) + + def init(self, arg = ''): + #Create a headset object + self.headset = Headset() + #Set the message callback to ExampleMessageCallback + self.headset.SetMessageCallback(ExampleMessageCallback) + #Retrieves the command line arguments + args = getattr(sys, 'argv', ['']) + #Set the default port to the first command line argument based on the parameter provided by user + default_port = self.params['COM Port'] + #Connect the headset + self.headset.Connect(default_port) + #Start the data acquisition based on the parameter provided by user + if arg.lower().startswith('imp'): + #Currently not used + self.headset.SetSampleCallback(ExampleSampleCallback_Impedances, 0) + self.headset.StartImpedanceDriver() + else: + #Set the sample callback to ExampleSampleCallback_Signals + self.headset.SetSampleCallback(ExampleSampleCallback_Signals, 0) + if len(arg.strip()): self.headset.SetDefaultReference(arg, True) + #Start the data acquisition + self.headset.StartBackgroundAcquisition() + + + def loop(self): + #Called every loop based on the user's chosen frequency + global data_buffer + #If the data buffer has data, then set the output to the data buffer + if len(data_buffer.keys()) > 0: + self.set_output(stream_name = 'DSI-24', data = data_buffer.get_data('DSI-24'), timestamp = data_buffer.get_timestamps('DSI-24')) + #Clear the data buffer + data_buffer.clear_stream_buffer_data('DSI-24') + + def cleanup(self): + #Called when the script is stopped + global data_buffer + global is_first_time + global time_offset + #Stop the data acquisition + self.headset.StopBackgroundAcquisition() + #Disconnect the headset + time_offset = 0 + is_first_time = True + self.headset.Disconnect() + data_buffer.clear_buffer() + +4. *Add* an output and name it "DSI-24". + +5. Change the number of channels to 24. + +6. *Add* a **Parameter Widget** to the script by clicking on the + sign. + +7. Change the name of the parameter to *COM Port* and switch the type of input to "str" so that we can input the COM port. + +8. Input the name of the COM port that you noted earlier. This will allow for PhysioLabXR to connect to the DSI-24. + +9. Press *Run*. + +.. figure:: media/WearableSensing_Scripting.gif + :width: 800 + :align: center + :alt: Running in PhysioLabXR + +Now the data stream is available as an LSL stream named DSI-24. + +10. To view the data stream, go to the **Stream Tab**. + +11. Input *DSI-24* in the Add Stream box and press the *Add Widget* button. + +12. Click the *Start Button* to start data stream. + +It is recommended that you change some of the settings for your stream. You can follow the steps `here `_ to change the settings. +For this tutorial, we added a Butterworth High Pass Filter with a cutoff frequency of 0.01 Hz, Nominal Sampling Rate of 250 and Group Channels Constant Offset to 50 by first pressing on the Gear icon and then on the top Default Group name. + +.. figure:: media/WearableSensing_Stream.gif + :width: 800 + :align: center + :alt: Viewing the stream on the Stream Tab + +13. To see the FFT of the signals from the `DSI-24 `_ right-click on the stream and select *FFT*. + +.. figure:: media/WearableSensing_FFT.gif + :width: 800 + :align: center + :alt: Showing FFT of data stream + +**Note** A more updated/indepth version of this script can be found in this path: +physiolabxr\interfaces\DeviceInterface\DSI24 which has 3 files to integrate the device to PhysioLabXR. + + +Now that you have the data streaming: check out these docs: + +- :ref: `How to save the data `_ +- :ref: `How to run a classification model on the data `_ +- :ref: `Need help connecting the DSI-24 with Varjo's XR-3? `_ + + + + diff --git a/source/archive/DataStreamAPIArchive.rst b/source/archive/DataStreamAPIArchive.rst index b40f107..de58053 100644 --- a/source/archive/DataStreamAPIArchive.rst +++ b/source/archive/DataStreamAPIArchive.rst @@ -178,7 +178,7 @@ Visualize LSL Data Using LSL -*********************** +********* `LabStreamingLayer (LSL) `_ is a network protocol for streaming time series data, mostly used for physiological experiments. @@ -299,7 +299,7 @@ You will see the data being plotted in line chart (:ref:`explore other visualiza Using ZMQ -*********************** +********* `ZMQ `_ is a messaging library for exchanging data between applications. ZMQ has the following characteristics: @@ -551,7 +551,7 @@ move your cursor to the lower left of the plot, click the *[A]* button that show Write your data source using :ref:`Scripting Interface ` -******************************** +*************************************************************************** You can create your own data source using the :ref:`Scripting Interface ` in Physiolab\ :sup:`XR`. :ref:`This section ` in Scripting gives detailed examples on how to write your own data source using the third party device driver API and the Physiolab\ :sup:`XR` scripting interface. diff --git a/source/index.rst b/source/index.rst index 500bace..9e23f12 100644 --- a/source/index.rst +++ b/source/index.rst @@ -1,4 +1,4 @@ -.. include:: .special.rst + PhysioLab\ :sup:`XR` ##################################################### @@ -63,11 +63,25 @@ Download Run the executable ------------------ +.. raw :: html + +

+ +

+ + Get the latest executable of PhysioLab\ :sup:`XR` from the `release page `_, that supports **Windows**, **MacOS**, and **Linux**. Install with pip ---------------- +.. raw :: html + +

+ +

+ + You can also install PhysioLab\ :sup:`XR` with pip, which will install the latest release version of PhysioLab\ :sup:`XR` and all its dependencies. This is platform-independent and works on Windows, MacOS, and Linux. @@ -79,12 +93,18 @@ If you are using pip, we recommend installing PhysioLab\ :sup:`XR` in a virtual python -m venv physiolabxr-env -Then activate the virtual environment: +Then activate the virtual environment: (If your OS is Linux or OSX (Apple)) .. code-block:: bash source physiolabxr-env/bin/activate +(If your OS is Windows) + +.. code-block:: bash + + physiolabxr-env/Scripts/activate + Install PhysioLab\ :sup:`XR` with: .. code-block:: bash From 22ff3d7a5ca55568e13274c0d3277167f1c4eceb Mon Sep 17 00:00:00 2001 From: LommyTea Date: Mon, 9 Dec 2024 18:12:10 -0500 Subject: [PATCH 5/5] Adding video for WearableSensing Tutorial --- source/WearableSensingDSI24.rst | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/source/WearableSensingDSI24.rst b/source/WearableSensingDSI24.rst index 564ad1f..1909f89 100644 --- a/source/WearableSensingDSI24.rst +++ b/source/WearableSensingDSI24.rst @@ -10,6 +10,13 @@ This tutorial will be primarily focused on the Windows platform. This tutorial currently only works with the latest stable developmental version of PhysioLabXR. If you would like to know how to download the latest stable version of PhysioLabXR, you can check that out `Here `_. + +.. raw :: html + +

+ +

+ If you would like to be more hands on and work with the data from DSI-24 as well as implement other functions from the DSI-24 you can check out `this `_. 1. Ensure you have the batteries installed the DIS-24.