From 5e67151da66223e98b829a4fc0baeebf3bb46ce1 Mon Sep 17 00:00:00 2001 From: timonmerk Date: Mon, 18 Nov 2024 15:56:43 +0100 Subject: [PATCH] fix LSL stream timing --- examples/plot_7_lsl_example.py | 219 +++++++++--------- gui_dev/.gitignore | 6 +- gui_dev/bun.lockb | Bin 366664 -> 320453 bytes gui_dev/package.json | 2 +- gui_dev/src/components/HeatmapGraph.jsx | 4 +- gui_dev/src/components/utils.jsx | 19 +- .../SourceSelection/StreamParameters.jsx | 29 +-- gui_dev/src/stores/sessionStore.js | 6 + py_neuromodulation/stream/mnelsl_stream.py | 25 +- py_neuromodulation/stream/stream.py | 11 +- start_LSL_stream.py | 2 +- 11 files changed, 164 insertions(+), 159 deletions(-) diff --git a/examples/plot_7_lsl_example.py b/examples/plot_7_lsl_example.py index 915e4a70..c9e2a331 100644 --- a/examples/plot_7_lsl_example.py +++ b/examples/plot_7_lsl_example.py @@ -11,114 +11,119 @@ # %% from matplotlib import pyplot as plt import py_neuromodulation as nm +import asyncio +from multiprocessing import freeze_support # %% # Let’s get the example data from the provided BIDS dataset and create the channels DataFrame. -( - RUN_NAME, - PATH_RUN, - PATH_BIDS, - PATH_OUT, - datatype, -) = nm.io.get_paths_example_data() - -( - raw, - data, - sfreq, - line_noise, - coord_list, - coord_names, -) = nm.io.read_BIDS_data(PATH_RUN=PATH_RUN) - -channels = nm.utils.set_channels( - ch_names=raw.ch_names, - ch_types=raw.get_channel_types(), - reference="default", - bads=raw.info["bads"], - new_names="default", - used_types=("ecog", "dbs", "seeg"), - target_keywords=["MOV_RIGHT"], -) - -# %% -# Playing the Data -# ---------------- -# -# Now we need our data to be represeted in the LSL stream. -# For this example an mne_lsl.Player is utilized, which is playing our earlier -# recorded data. However, you could make use of any LSL source (live or -# offline). -# If you want to bind your own data source, make sure to specify the -# necessary parameters (data type, type, name) accordingly. -# If you are unsure about the parameters of your data source you can -# always search for available lsl streams. -# - -settings = nm.NMSettings.get_fast_compute() - -player = nm.stream.LSLOfflinePlayer(raw=raw, stream_name="example_stream") - -player.start_player(chunk_size=30) -# %% -# Creating the LSLStream object -# ----------------------------- -# -# Next let’s create a Stream analog to the First Demo’s example However as -# we run the stream, we will set the *lsl-stream* value to True and pass -# the stream name we earlier declared when initializing the player object. - -settings.features.welch = False -settings.features.fft = True -settings.features.bursts = False -settings.features.sharpwave_analysis = False -settings.features.coherence = False - -# %% -stream = nm.Stream( - sfreq=sfreq, - channels=channels, - settings=settings, - coord_list=coord_list, - verbose=True, - line_noise=line_noise, -) -# %% -# We then simply have to set the `stream_lsl` parameter to be `True` and specify the `stream_lsl_name`. - -features = stream.run( - is_stream_lsl=True, - plot_lsl=False, - stream_lsl_name="example_stream", - out_dir=PATH_OUT, - experiment_name=RUN_NAME, -) - -# %% -# We can then look at the computed features and check if the streamed data was processed correctly. -# This can be verified by the time label: - -plt.plot(features.time, features.MOV_RIGHT) - - -###################################################################### -# Feature Analysis of Movement -# ---------------------------- -# We can now check the movement averaged features of an ECoG channel. -# Note that the path was here adapted to be documentation build compliant. - - -feature_reader = nm.analysis.FeatureReader(feature_dir=PATH_OUT, feature_file=RUN_NAME) -feature_reader.label_name = "MOV_RIGHT" -feature_reader.label = feature_reader.feature_arr["MOV_RIGHT"] - -feature_reader.plot_target_averaged_channel( - ch="ECOG_RIGHT_0", - list_feature_keywords=None, - epoch_len=4, - threshold=0.5, - ytick_labelsize=7, - figsize_x=12, - figsize_y=12, -) +if __name__ == "__main__": + freeze_support() + ( + RUN_NAME, + PATH_RUN, + PATH_BIDS, + PATH_OUT, + datatype, + ) = nm.io.get_paths_example_data() + + ( + raw, + data, + sfreq, + line_noise, + coord_list, + coord_names, + ) = nm.io.read_BIDS_data(PATH_RUN=PATH_RUN) + + channels = nm.utils.set_channels( + ch_names=raw.ch_names, + ch_types=raw.get_channel_types(), + reference="default", + bads=raw.info["bads"], + new_names="default", + used_types=("ecog", "dbs", "seeg"), + target_keywords=["MOV_RIGHT"], + ) + + # %% + # Playing the Data + # ---------------- + # + # Now we need our data to be represeted in the LSL stream. + # For this example an mne_lsl.Player is utilized, which is playing our earlier + # recorded data. However, you could make use of any LSL source (live or + # offline). + # If you want to bind your own data source, make sure to specify the + # necessary parameters (data type, type, name) accordingly. + # If you are unsure about the parameters of your data source you can + # always search for available lsl streams. + # + + settings = nm.NMSettings.get_fast_compute() + + player = nm.stream.LSLOfflinePlayer(raw=raw, stream_name="example_stream") + + player.start_player(chunk_size=30, n_repeat=5999999) + import time + time.sleep(5) + # %% + # Creating the LSLStream object + # ----------------------------- + # + # Next let’s create a Stream analog to the First Demo’s example However as + # we run the stream, we will set the *lsl-stream* value to True and pass + # the stream name we earlier declared when initializing the player object. + + settings.features.welch = False + settings.features.fft = True + settings.features.bursts = False + settings.features.sharpwave_analysis = False + settings.features.coherence = False + + # %% + stream = nm.Stream( + sfreq=sfreq, + channels=channels, + settings=settings, + coord_list=coord_list, + verbose=True, + line_noise=line_noise, + ) + # %% + # We then simply have to set the `stream_lsl` parameter to be `True` and specify the `stream_lsl_name`. + + features = asyncio.run(stream.run( + is_stream_lsl=True, + stream_lsl_name="example_stream", + out_dir=PATH_OUT, + experiment_name=RUN_NAME, + )) + + # %% + # We can then look at the computed features and check if the streamed data was processed correctly. + # This can be verified by the time label: + + plt.plot(features.time, features.MOV_RIGHT) + + + ###################################################################### + # Feature Analysis of Movement + # ---------------------------- + # We can now check the movement averaged features of an ECoG channel. + # Note that the path was here adapted to be documentation build compliant. + + + feature_reader = nm.analysis.FeatureReader(feature_dir=PATH_OUT, feature_file=RUN_NAME) + feature_reader.label_name = "MOV_RIGHT" + feature_reader.label = feature_reader.feature_arr["MOV_RIGHT"] + + feature_reader.plot_target_averaged_channel( + ch="ECOG_RIGHT_0", + list_feature_keywords=None, + epoch_len=4, + threshold=0.5, + ytick_labelsize=7, + figsize_x=12, + figsize_y=12, + ) diff --git a/gui_dev/.gitignore b/gui_dev/.gitignore index 51c5ae89..283940ff 100644 --- a/gui_dev/.gitignore +++ b/gui_dev/.gitignore @@ -14,4 +14,8 @@ dist-ssr *.local # Dev-scripts -gui_startup.py \ No newline at end of file +gui_startup.py + +# Remove once front was built +py_neuromodulation/gui/frontend/* + diff --git a/gui_dev/bun.lockb b/gui_dev/bun.lockb index 74f7ed9616ddbe2336f2dc970687049f584a53f5..1b6429dbb267d4c33fcc0f332be02c17fa3c9a4f 100755 GIT binary patch delta 75652 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 diff --git a/gui_dev/package.json b/gui_dev/package.json index fc249238..3e1c3c16 100644 --- a/gui_dev/package.json +++ b/gui_dev/package.json @@ -35,7 +35,7 @@ "babel-plugin-react-compiler": "latest", "eslint": "^9.14.0", "eslint-config-prettier": "^9.1.0", - "eslint-plugin-jsdoc": "^50.4.3", + "eslint-plugin-jsdoc": "^50.5.0", "eslint-plugin-react": "^7.37.2", "eslint-plugin-react-compiler": "latest", "eslint-plugin-react-hooks": "^4.6.2", diff --git a/gui_dev/src/components/HeatmapGraph.jsx b/gui_dev/src/components/HeatmapGraph.jsx index 4f2058c1..8fb7aa3d 100644 --- a/gui_dev/src/components/HeatmapGraph.jsx +++ b/gui_dev/src/components/HeatmapGraph.jsx @@ -111,6 +111,7 @@ export const HeatmapGraph = () => { if (!graphData || !selectedChannel || features.length === 0 || selectedFeatures.length === 0) return; // TODO: Always data in ms? (Time conversion here always necessary?) + // Timon: yes, let's define that the stream's time is always in ms let timestamp = graphData.time; if (timestamp === undefined) { timestamp = (Date.now() - hasInitialized.current) / 1000; @@ -141,6 +142,7 @@ export const HeatmapGraph = () => { const currentTime = timestamp; const minTime = currentTime - maxTimeWindow; // TODO: What should be the visible window frame? adjustable? 10s? + // Timon: Would be amazing if it's adjustable const validIndices = x.reduce((indices, time, index) => { if (time >= minTime) { @@ -221,7 +223,7 @@ export const HeatmapGraph = () => { } // TODO: Should we make multiple selectable? + control={} // TODO: Should we make multiple selectable? // Timon: No, let's keep with one label={channel.name} /> ))} diff --git a/gui_dev/src/components/utils.jsx b/gui_dev/src/components/utils.jsx index df1e7c3d..53a6f716 100644 --- a/gui_dev/src/components/utils.jsx +++ b/gui_dev/src/components/utils.jsx @@ -1,5 +1,5 @@ import React from "react"; - +import { TextField } from "@mui/material"; /** * @param {Object} props * @param {string} props.href - The URL to link to @@ -41,3 +41,20 @@ export const getChannelAndFeature = (availableChannels, keystr) => { return { channelName, featureName}; }; +export const MyTextField = ({ label, value, onChange }) => ( + +); diff --git a/gui_dev/src/pages/SourceSelection/StreamParameters.jsx b/gui_dev/src/pages/SourceSelection/StreamParameters.jsx index aa99b47f..8eff9578 100644 --- a/gui_dev/src/pages/SourceSelection/StreamParameters.jsx +++ b/gui_dev/src/pages/SourceSelection/StreamParameters.jsx @@ -1,24 +1,7 @@ import { TextField } from "@mui/material"; import { useSessionStore } from "@/stores"; import { TitledBox } from "@/components"; - -const MyTextField = ({ label, value, onChange }) => ( - -); +import { MyTextField } from "@/components/utils"; export const StreamParameters = () => { const streamParameters = useSessionStore((state) => state.streamParameters); @@ -51,6 +34,16 @@ export const StreamParameters = () => { value={streamParameters.samplingRateFeatures} onChange={(event) => handleOnChange(event, "samplingRateFeatures")} /> + handleOnChange(event, "experimentName")} + /> + handleOnChange(event, "outputDirectory")} + /> ); }; diff --git a/gui_dev/src/stores/sessionStore.js b/gui_dev/src/stores/sessionStore.js index b887e2c7..855be031 100644 --- a/gui_dev/src/stores/sessionStore.js +++ b/gui_dev/src/stores/sessionStore.js @@ -50,6 +50,8 @@ export const useSessionStore = createPersistStore("session", (set, get) => ({ lineNoise: 50, samplingRateFeatures: 10, allValid: false, + experimentName: "sub", + outputDirectory: "default", }, setSourceType: (type) => set({ sourceType: type }), @@ -128,6 +130,8 @@ export const useSessionStore = createPersistStore("session", (set, get) => ({ file_path: get().fileSource.path, sampling_rate_features: get().streamParameters.samplingRateFeatures, line_noise: get().streamParameters.lineNoise, + experimentName: get().streamParameters.experimentName, + outputDirectory: get().streamParameters.outputDirectory, }), }); @@ -168,6 +172,8 @@ export const useSessionStore = createPersistStore("session", (set, get) => ({ stream_name: lslSource.availableStreams[0].name, sampling_rate_features: streamParameters.samplingRate, line_noise: streamParameters.lineNoise, + experimentName: streamParameters.experimentName, + outputDirectory: streamParameters.outputDirectory, }), }); diff --git a/py_neuromodulation/stream/mnelsl_stream.py b/py_neuromodulation/stream/mnelsl_stream.py index 677d71c7..de63d316 100644 --- a/py_neuromodulation/stream/mnelsl_stream.py +++ b/py_neuromodulation/stream/mnelsl_stream.py @@ -91,30 +91,7 @@ def get_next_batch(self) -> Iterator[tuple[np.ndarray, np.ndarray]]: if stream_start_time is None: stream_start_time = timestamp[0] - # for i in range(self._n_seconds_wait_before_disconnect): - # if ( - # data is not None - # and check_data is not None - # and np.allclose(data, check_data, atol=1e-7, rtol=1e-7) - # ): - # logger.warning( - # f"No new data incoming. Disconnecting stream in {3-i} seconds." - # ) - # time.sleep(1) - # i += 1 - # if i == self._n_seconds_wait_before_disconnect: - # self.stream.disconnect() - # logger.warning("Stream disconnected.") - # break - logger.info(f"Stream time: {timestamp[-1] - stream_start_time}") - yield timestamp, data - - #if not self.headless and self.keyboard_interrupt: - # logger.info("Keyboard interrupt") - # self.listener.stop() - # self.stream.disconnect() + yield timestamp - stream_start_time, data - #def set_keyboard_interrupt(self): - # self.keyboard_interrupt = True diff --git a/py_neuromodulation/stream/stream.py b/py_neuromodulation/stream/stream.py index a3c1d1fe..85ddb6f2 100644 --- a/py_neuromodulation/stream/stream.py +++ b/py_neuromodulation/stream/stream.py @@ -317,11 +317,12 @@ async def run( f"{batch_length:.3f} seconds of new data processed", ) - feature_dict["time"] = ( - batch_length - if self.is_stream_lsl - else np.ceil(this_batch_end * 1000 + 1) - ) + feature_dict["time"] = np.ceil(this_batch_end * 1000 + 1) + #( + # np.ceil(batch_length) + # if self.is_stream_lsl + # else + #) prev_batch_end = this_batch_end diff --git a/start_LSL_stream.py b/start_LSL_stream.py index b828ce71..aff1a8bf 100644 --- a/start_LSL_stream.py +++ b/start_LSL_stream.py @@ -78,7 +78,7 @@ player.start_player(chunk_size=30, n_repeat=5999999) - App(run_in_webview=False).launch() + App(run_in_webview=False, dev=True).launch() # Check if LSL stream pushes data