
ملٹیپل ڈیٹا اسٹریمز کی ہم آہنگی کے لیے لیب اسٹریمنگ لیئر (LSL)
ڈاکٹر روشنی رندینیا اور لوکاس کلائن
اپ ڈیٹ کیا گیا
17 مئی، 2024

ملٹیپل ڈیٹا اسٹریمز کی ہم آہنگی کے لیے لیب اسٹریمنگ لیئر (LSL)
ڈاکٹر روشنی رندینیا اور لوکاس کلائن
اپ ڈیٹ کیا گیا
17 مئی، 2024

ملٹیپل ڈیٹا اسٹریمز کی ہم آہنگی کے لیے لیب اسٹریمنگ لیئر (LSL)
ڈاکٹر روشنی رندینیا اور لوکاس کلائن
اپ ڈیٹ کیا گیا
17 مئی، 2024
خوش آمدید! اس ٹیوٹوریل میں ہم کثیر ڈیوائسز سے Emotiv EEG ڈیٹا کو اکٹھا اور ہم آہنگ کرنے کے لیے Python میں Lab Streaming Layer (LSL) کا استعمال کرنا سیکھیں گے۔ اس کے لیے Python پروگرامنگ زبان کا بنیادی عملی علم ہونا ضروری ہے۔
آپ کیا سیکھیں گے
لیب اسٹریمنگ لیئر (LSL) کیا ہے اور محققین اس کا استعمال کیوں کرتے ہیں
متعدد Emotiv EEG ڈیوائسز سے ہم آہنگ ڈیٹا کو کیسے اکٹھا کریں
اکٹھے کیے گئے ڈیٹا کو امپورٹ اور اس کا معائنہ کیسے کریں
1.1 LSL کیا ہے اور یہ کس لیے موزوں ہے؟
لیب اسٹریمنگ لیئر (LSL) ایک اوپن سورس ٹول بکس ہے جس کا استعمال متنوع سینسر ہارڈویئر سے اعصابی، جسمانی، اور رویہ جاتی ڈیٹا کے بہاؤ (سٹریمز) کو بھیجنے، وصول کرنے اور ہم آہنگ کرنے کے لیے کیا جا سکتا ہے۔ تیزی سے زیادہ قابل، درست اور پورٹیبل دماغی اور جسمانی سینسنگ ہارڈویئر ڈیوائسز (جیسے Emotiv EEG سسٹمز) نیورو سائنس کو لیب سے باہر حقیقی وقت کے ڈیٹا کی دنیا میں لا رہی ہیں۔ جہاں کبھی EEG اور MEG جیسی دماغی پیمائشیں صرف تحقیقی لیبارٹریوں تک محدود تھیں، اب پورٹیبل ڈیوائسز ہمیں زیادہ قدرتی ماحول میں، اور ایک ساتھ متعدد لوگوں سے ڈیٹا کے متعدد نمونے اکٹھا کرنے کی اجازت دیتی ہیں۔
ایک محقق دو لوگوں کے درمیان جسمانی ہم آہنگی میں دلچسپی لے سکتا ہے جو ایک ہی موسیقی سن رہے ہوں۔ LSL ہمیں دو EEG ہیڈ سیٹس سے الگ الگ ڈیٹا اکٹھا کرنے میں مدد کر سکتا ہے جو آواز کی پیشکش کے ساتھ بھی ہم آہنگ ہوتا ہے۔
LSL کے دیگر استعمالات کی کچھ مثالیں:
کسی تجربے سے ایونٹ مارکرز کو جاری EEG ڈیٹا میں شامل کرنا
واحد شریک کے لیے متعدد ذرائع (مثلاً دل کی دھڑکن، EMG، EEG) سے حاصل ہونے والے ڈیٹا کو وقت کے لحاظ سے ہم آہنگ کرنا
متعدد شرکاء سے حاصل ہونے والے ڈیٹا کو وقت کے مطابق ترتیب دینا (مثلاً EEG Hyperscanning اسٹڈیز)
1.2 LSL کیسے کام کرتا ہے؟
Lab Streaming Layer متعدد ڈیوائسز کے درمیان ٹائم-سیریز ڈیٹا کے حقیقی وقت میں تبادلے کا ایک پروٹوکول ہے۔ LSL کو ازگر (Python) ، MATLAB، C++، Java اور دیگر پروگرامنگ زبانوں کی اوپن سورس لائبریریوں کا استعمال کرتے ہوئے نافذ کیا جا سکتا ہے۔

بنیادی افادیت LSL ڈیٹا اسٹریمز کے گرد گھومتی ہے:
1۔ ایک حصولی ڈیوائس/سافٹ ویئر ڈیٹا اکٹھا کرتا ہے اور ایک ڈیٹا اسٹریم بناتا ہے - میٹا ڈیٹا (سیمپلی گ ریٹ، ڈیٹا کی قسم، چینل کی معلومات وغیرہ) سمیت EEG ریکارڈنگ ڈیوائسز، آئی-ٹریکرز، موشن کیپچر سسٹمز، ہارٹ ریٹ مانیٹرز وغیرہ سے LSL پر فزیولوجیکل ڈیٹا اسٹریم کیا جا سکتا ہے - تجربات سے ایونٹ مارکرز (مثلاً PsychoPy کا استعمال کرتے ہوئے) کو بھی LSL کا استعمال کرتے ہوئے ڈیٹا اسٹریم کے طور پر بھیجا جا سکتا ہے
2۔ ڈیٹا اسٹریم کو نیٹ ورک پر پبلش کیا جاتا ہے - LSL کا استعمال کرتے ہوئے ڈیٹا اسی طرح بھیجا جاتا ہے؛ ڈیٹا اسٹریم نیٹ ورک پر "براڈکاسٹ" ہوتی ہے - پبلش کردہ اسٹریمز نیٹ ورک پر دستیاب ہوتی ہیں اور اسی نیٹ ورک پر موجود دیگر LSL سپورٹڈ ڈیوائسز کے ذریعے تلاش کی جا سکتی ہیں - LSL ایک مشترکہ کلاک کی بنیاد پر ہر ڈیٹا ٹکرے یا نمونے کو ایک ٹائم اسٹیمپ تفویض کرتا ہے (نیٹ ورک ٹائم پروٹوکول کے تحت)۔ - اسٹریم کو ایک "آؤٹ لیٹ" کے ذریعے نمونہ بہ نمونہ (یا ٹکڑے بہ ٹکڑے) آگے دھکیلا جاتا ہے
3۔ مجموعہ ڈیوائسز ڈیٹا اسٹریمز کی "سبسکرپشن" حاصل کرتی ہیں - LSL کا استعمال کرتے ہوئے ڈیٹا اسی طرح موصول ہوتا ہے - اسی نیٹ ورک پر موجود مجموعہ ڈیوائسز "ان لیٹس" کے ذریعے پبلش کردہ ڈیٹا اسٹریمز حاصل کرتی ہیں۔ - ہر انلیٹ صرف ایک آؤٹ لیٹ سے اسٹریم کے نمونے اور میٹا ڈیٹا وصول کرتا ہے
4۔ ڈیٹا محفوظ کریں - ڈیٹا اسٹریم کی سبسکرپشن حاصل کرنے پر، آپ اسے اپنی پسندیدہ پروگرامنگ زبان میں ایک متغیر (variable) میں محفوظ کر سکتے ہیں، یا اسے معیاری فارمیٹ جیسے .xdf میں محفوظ کرنے کے لیے LSL کے فراہم کردہ سافٹ ویئر LabRecorder کا استعمال کر سکتے ہیں۔
2.0 ٹیوٹوریل کا جائزہ
اس ٹیوٹوریل میں، ہم ایک مثالی تجرباتی سیٹ اپ لیں گے اور Python میں LSL کا استعمال کرتے ہوئے اسے نافذ کرنے کے لیے ضروری مراحل اور کوڈ کے ذریعے آپ کی رہنمائی کریں گے۔ ہم Emotiv ہیڈسیٹ پہنے ہوئے دو لوگوں سے EEG ڈیٹا اکٹھا کرنے کے دوران آواز چلانے کے لیے Python کا استعمال کریں گے۔ ہم EEG ڈیٹا اکٹھا کرنے کے لیے دو کمپیوٹرز کا استعمال کریں گے جن میں سے ہر ایک پر EmotivPRO چل رہا ہوگا، اور ہر اسٹریم کو ایک علیحدہ LSL آؤٹ لیٹ کے ذریعے براڈکاسٹ کریں گے۔ ہم آڈیو فائل چلانے کے لیے پائتھن لائبریری کا استعمال کریں گے اور فائل شروع ہونے پر بیک وقت ایک ٹرگر بھیجیں گے۔
مراحل:
1. ان LSL آؤٹ لیٹس کے ذریعے ڈیٹا اسٹریم کرنے کے لیے EmotivPRO کا استعمال کریں جس میں EEG ڈیٹا (اور/یا تحریک، رابطے کا معیار، سگنل کا معیار وغیرہ) شامل ہے۔ 2۔ Python اسکرپٹ کا استعمال کرتے ہوئے ایک آڈیو ٹریک چلائیں، اور ساتھ ہی ایک اور LSL کے ذریعے ٹرگر بھیجیں، LSL انلیٹ کے ذریعے تینوں ڈیٹا اسٹریمز کو کیپچر اور محفوظ کرنے کے لیے LabRecorder کا استعمال کریں۔

2.1 مرحلہ 1 - سیٹ اپ اور انسٹالیشن
ڈیٹا کیپچر کرنے کے لیے آپ کو سپورٹ شدہ ڈیٹا ایکوزیشن ڈیوائسز کی ضرورت ہوگی
• Emotiv کی تمام دماغی ڈیوائسز EmotivPRO سافٹ ویئر کے ذریعے LSL سے منسلک ہوتی ہیںاپنی ڈیوائس پر EmotivPRO انسٹال کریں۔ LSL استعمال کرنے کے لیے آپ کو ایک درست EmotivPRO لائسنس کی ضرورت ہوگی۔
درج ذیل کمانڈ کے ساتھ Python LSL لائبریری انسٹال کریں:
pip install pylslLabRecorder سافٹ ویئر ڈاؤن لوڈ کریں۔ یہ ایک آسان، مفت ایپ ہے جسے کمانڈ لائن سے یا اسٹینڈ اکیلے ڈاؤن لوڈ کے طور پر چلایا جا سکتا ہے
ہمارے تجربے کے لیے : Python کا استعمال کرتے ہوئے آڈیو چلانے کے لیے ضروری پیکجز انسٹال کریں
pip install sounddevice soundfile
2.2 مرحلہ 3 - EmotivPRO سے ایک LSL اسٹریم کے ذریعے ڈیٹا بھیجیں
ایپ کے اوپری دائیں کونے میں "..." تلاش کریں، Settings پر جائیں
‘Lab Streaming Layer’ سیکشن اور ‘Outlet’ سب سیکشن تلاش کریں
وہ تمام ڈیٹا ٹائپس منتخب کریں جنہیں آپ براڈکاسٹ کرنا چاہتے ہیں
ڈیٹا فارمیٹ منتخب کریں (32-bit float یا 64-bit double)
منتخب کریں کہ آیا ڈیٹا نمونہ بہ نمونہ بھیجنا ہے یا نمونوں کے ٹکڑوں (chunks) میں
LSL ڈیٹا اسٹریم براڈکاسٹ کرنے کے لیے 'Start' پر کلک کریں
2.3 مرحلہ 4 - آڈیو چلانے اور ٹرگرز بھیجنے کے لیے Python اسکرپٹ کا استعمال کریں
درج ذیل کوڈ بلاک کو کاپی کر کے ایک پائتھن فائل میں پیسٹ کریں اور اسے اپنے کمپیوٹر میں محفوظ کر لیں۔
ایک آڈیو فائل تلاش کریں (مثالی طور پر ایک .wav فائل) جسے آپ چلانا چاہتے ہیں اور اسکرپٹ میں متغیر
audio_filepathکو تبدیل کر کے اپنے کمپیوٹر پر موجود اس فائل کا پاتھ درج کریںکمانڈ لائن سے بات چیت کرنے کے لیے ایک کمانڈ پرامپٹ کھولیں اور اس فولڈر پر جائیں جہاں آپ کی Python فائل محفوظ ہے
درج کریں:
python3 filename.py
• آپ کی Python انسٹالیشن پر منحصر ہے، آپpython3کی جگہpythonاستعمال کر سکتے ہیں
نوٹ:/path/to/audio.wavکو اس آڈیو فائل کے پاتھ سے تبدیل کریں جسے آپ اپنے تجربے کے دوران چلانا چاہتے ہیں۔
""" LSL Example: Play audio and send a trigger marker This script creates an LSL marker stream, waits for the user to press ENTER, then plays an audio file and sends a marker that can be synchronized with EEG data collected through LabRecorder. """ import sounddevice as sd import soundfile as sf from pylsl import StreamInfo, StreamOutlet def wait_for_keypress(): print("Press ENTER to start audio playback and send an LSL marker.") while True: if input() == "": break def play_audio_and_send_marker(audio_file, outlet): data, fs = sf.read(audio_file) print("Playing audio and sending LSL marker...") marker_val = [1] outlet.push_sample(marker_val) sd.play(data, fs) sd.wait() print("Audio playback finished.") if __name__ == "__main__": info = StreamInfo( name="AudioMarkers", type="Markers", channel_count=1, nominal_srate=0, channel_format="int32", source_id="uniqueMarkerID12345" ) outlet = StreamOutlet(info) while True: wait_for_keypress() audio_filepath = "/path/to/audio.wav" play_audio_and_send_marker( audio_filepath, outlet )
""" LSL Example: Play audio and send a trigger marker This script creates an LSL marker stream, waits for the user to press ENTER, then plays an audio file and sends a marker that can be synchronized with EEG data collected through LabRecorder. """ import sounddevice as sd import soundfile as sf from pylsl import StreamInfo, StreamOutlet def wait_for_keypress(): print("Press ENTER to start audio playback and send an LSL marker.") while True: if input() == "": break def play_audio_and_send_marker(audio_file, outlet): data, fs = sf.read(audio_file) print("Playing audio and sending LSL marker...") marker_val = [1] outlet.push_sample(marker_val) sd.play(data, fs) sd.wait() print("Audio playback finished.") if __name__ == "__main__": info = StreamInfo( name="AudioMarkers", type="Markers", channel_count=1, nominal_srate=0, channel_format="int32", source_id="uniqueMarkerID12345" ) outlet = StreamOutlet(info) while True: wait_for_keypress() audio_filepath = "/path/to/audio.wav" play_audio_and_send_marker( audio_filepath, outlet )
""" LSL Example: Play audio and send a trigger marker This script creates an LSL marker stream, waits for the user to press ENTER, then plays an audio file and sends a marker that can be synchronized with EEG data collected through LabRecorder. """ import sounddevice as sd import soundfile as sf from pylsl import StreamInfo, StreamOutlet def wait_for_keypress(): print("Press ENTER to start audio playback and send an LSL marker.") while True: if input() == "": break def play_audio_and_send_marker(audio_file, outlet): data, fs = sf.read(audio_file) print("Playing audio and sending LSL marker...") marker_val = [1] outlet.push_sample(marker_val) sd.play(data, fs) sd.wait() print("Audio playback finished.") if __name__ == "__main__": info = StreamInfo( name="AudioMarkers", type="Markers", channel_count=1, nominal_srate=0, channel_format="int32", source_id="uniqueMarkerID12345" ) outlet = StreamOutlet(info) while True: wait_for_keypress() audio_filepath = "/path/to/audio.wav" play_audio_and_send_marker( audio_filepath, outlet )
2.4 مرحلہ 5 - تمام LSL اسٹریمز کو دیکھنے اور محفوظ کرنے کے لیے LabRecorder کا استعمال کریں
LabRecorder کھولیں
Updateدبائیں۔ دستیاب LSL اسٹریمز اسٹریم لسٹ میں نظر آنی چاہئیں
• آپ کو دونوں EmotivPROs (عام طور پر "Emotiv-DataStream" کہلانے والے) اور مارکر اسٹریم ("AudioMarkers" کہلانے والے) کی اسٹریمز دیکھنے کے قابل ہونا چاہئےڈیٹا کو ذخيرہ کرنے کا مقام منتخب کرنے (اور دیگر پیرامیٹرز کو سیٹ کرنے) کے لیے
Browseپر کلک کریںتمام اسٹریمز کو منتخب کریں اور ریکارڈنگ شروع کرنے کے لیے
Recordدبائیں
3.0 ڈیٹا کے ساتھ کام کرنا
LabRecorder ایک XDF فائل (Extensible Data Format) تیار کرتا ہے جس میں تمام اسٹریمز کا ڈیٹا ہوتا ہے۔ XDF فائلیں سٹریمز میں ترتیب دی جاتی ہیں، ہر ایک کا ایک الگ ہیڈر ہوتا ہے جو بتاتا ہے کہ اس میں کیا ہے (ڈیوائس کا نام، ڈیٹا کی قسم، سیمپلنگ ریٹ، چینلز، اور بہت کچھ)۔ آپ اپنی XDF فائل کو کھولنے اور کچھ بنیادی معلومات ظاہر کرنے کے لیے نیچے دیے گئے کوڈ بلاک کو استعمال کر سکتے ہیں۔
نوٹ: /path/to/your/file.xdf کو اپنی LabRecorder XDF آؤٹ پٹ فائل کے پاتھ سے تبدیل کریں۔
import pyxdf import mne import matplotlib.pyplot as plt import numpy as np # Give the path to your LSL output file here. data_path = "/path/to/your/file.xdf" # Load the XDF file. streams, fileheader = pyxdf.load_xdf(data_path) print("XDF File Header:", fileheader) print("Number of streams found:", len(streams)) for i, stream in enumerate(streams): print("\nStream", i + 1) print("Stream Name:", stream["info"]["name"][0]) print("Stream Type:", stream["info"]["type"][0]) print("Number of Channels:", stream["info"]["channel_count"][0]) sfreq = float(stream["info"]["nominal_srate"][0]) print("Sampling Rate:", sfreq) print("Number of Samples:", len(stream["time_series"])) print("First 5 data points:", stream["time_series"][:5]) channel_names = [ chan["label"][0] for chan in stream["info"]["desc"][0]["channels"][0]["channel"] ] print("Channel Names:", channel_names) channel_types = "eeg"
import pyxdf import mne import matplotlib.pyplot as plt import numpy as np # Give the path to your LSL output file here. data_path = "/path/to/your/file.xdf" # Load the XDF file. streams, fileheader = pyxdf.load_xdf(data_path) print("XDF File Header:", fileheader) print("Number of streams found:", len(streams)) for i, stream in enumerate(streams): print("\nStream", i + 1) print("Stream Name:", stream["info"]["name"][0]) print("Stream Type:", stream["info"]["type"][0]) print("Number of Channels:", stream["info"]["channel_count"][0]) sfreq = float(stream["info"]["nominal_srate"][0]) print("Sampling Rate:", sfreq) print("Number of Samples:", len(stream["time_series"])) print("First 5 data points:", stream["time_series"][:5]) channel_names = [ chan["label"][0] for chan in stream["info"]["desc"][0]["channels"][0]["channel"] ] print("Channel Names:", channel_names) channel_types = "eeg"
import pyxdf import mne import matplotlib.pyplot as plt import numpy as np # Give the path to your LSL output file here. data_path = "/path/to/your/file.xdf" # Load the XDF file. streams, fileheader = pyxdf.load_xdf(data_path) print("XDF File Header:", fileheader) print("Number of streams found:", len(streams)) for i, stream in enumerate(streams): print("\nStream", i + 1) print("Stream Name:", stream["info"]["name"][0]) print("Stream Type:", stream["info"]["type"][0]) print("Number of Channels:", stream["info"]["channel_count"][0]) sfreq = float(stream["info"]["nominal_srate"][0]) print("Sampling Rate:", sfreq) print("Number of Samples:", len(stream["time_series"])) print("First 5 data points:", stream["time_series"][:5]) channel_names = [ chan["label"][0] for chan in stream["info"]["desc"][0]["channels"][0]["channel"] ] print("Channel Names:", channel_names) channel_types = "eeg"
4.0 اضافی وسائل
سرکاری دستاویزات
آن لائن دستاویزات کو دیکھیں، بشمول GitHub پر آفیشل README فائل
اضافی وسائل:
• مثال اسکرپٹس کے ساتھ، Emotiv کی ڈیوائسز کا استعمال کرتے ہوئے LSL چلانے کے لیے کوڈ
• یوٹیوب پر مفید LSL ڈیمو
• تمام متعلقہ لائبریریوں کے لیے SCCN LSL GitHub ریپوزٹری
• ذیلی ماڈیولز اور ایپس کے مجموعہ کے لیے LSL GitHub ریپوزٹریہائپر سکیننگ اسٹڈیز کے لیے HyPyP تجزیہ پائپ لائن
خوش آمدید! اس ٹیوٹوریل میں ہم کثیر ڈیوائسز سے Emotiv EEG ڈیٹا کو اکٹھا اور ہم آہنگ کرنے کے لیے Python میں Lab Streaming Layer (LSL) کا استعمال کرنا سیکھیں گے۔ اس کے لیے Python پروگرامنگ زبان کا بنیادی عملی علم ہونا ضروری ہے۔
آپ کیا سیکھیں گے
لیب اسٹریمنگ لیئر (LSL) کیا ہے اور محققین اس کا استعمال کیوں کرتے ہیں
متعدد Emotiv EEG ڈیوائسز سے ہم آہنگ ڈیٹا کو کیسے اکٹھا کریں
اکٹھے کیے گئے ڈیٹا کو امپورٹ اور اس کا معائنہ کیسے کریں
1.1 LSL کیا ہے اور یہ کس لیے موزوں ہے؟
لیب اسٹریمنگ لیئر (LSL) ایک اوپن سورس ٹول بکس ہے جس کا استعمال متنوع سینسر ہارڈویئر سے اعصابی، جسمانی، اور رویہ جاتی ڈیٹا کے بہاؤ (سٹریمز) کو بھیجنے، وصول کرنے اور ہم آہنگ کرنے کے لیے کیا جا سکتا ہے۔ تیزی سے زیادہ قابل، درست اور پورٹیبل دماغی اور جسمانی سینسنگ ہارڈویئر ڈیوائسز (جیسے Emotiv EEG سسٹمز) نیورو سائنس کو لیب سے باہر حقیقی وقت کے ڈیٹا کی دنیا میں لا رہی ہیں۔ جہاں کبھی EEG اور MEG جیسی دماغی پیمائشیں صرف تحقیقی لیبارٹریوں تک محدود تھیں، اب پورٹیبل ڈیوائسز ہمیں زیادہ قدرتی ماحول میں، اور ایک ساتھ متعدد لوگوں سے ڈیٹا کے متعدد نمونے اکٹھا کرنے کی اجازت دیتی ہیں۔
ایک محقق دو لوگوں کے درمیان جسمانی ہم آہنگی میں دلچسپی لے سکتا ہے جو ایک ہی موسیقی سن رہے ہوں۔ LSL ہمیں دو EEG ہیڈ سیٹس سے الگ الگ ڈیٹا اکٹھا کرنے میں مدد کر سکتا ہے جو آواز کی پیشکش کے ساتھ بھی ہم آہنگ ہوتا ہے۔
LSL کے دیگر استعمالات کی کچھ مثالیں:
کسی تجربے سے ایونٹ مارکرز کو جاری EEG ڈیٹا میں شامل کرنا
واحد شریک کے لیے متعدد ذرائع (مثلاً دل کی دھڑکن، EMG، EEG) سے حاصل ہونے والے ڈیٹا کو وقت کے لحاظ سے ہم آہنگ کرنا
متعدد شرکاء سے حاصل ہونے والے ڈیٹا کو وقت کے مطابق ترتیب دینا (مثلاً EEG Hyperscanning اسٹڈیز)
1.2 LSL کیسے کام کرتا ہے؟
Lab Streaming Layer متعدد ڈیوائسز کے درمیان ٹائم-سیریز ڈیٹا کے حقیقی وقت میں تبادلے کا ایک پروٹوکول ہے۔ LSL کو ازگر (Python) ، MATLAB، C++، Java اور دیگر پروگرامنگ زبانوں کی اوپن سورس لائبریریوں کا استعمال کرتے ہوئے نافذ کیا جا سکتا ہے۔

بنیادی افادیت LSL ڈیٹا اسٹریمز کے گرد گھومتی ہے:
1۔ ایک حصولی ڈیوائس/سافٹ ویئر ڈیٹا اکٹھا کرتا ہے اور ایک ڈیٹا اسٹریم بناتا ہے - میٹا ڈیٹا (سیمپلی گ ریٹ، ڈیٹا کی قسم، چینل کی معلومات وغیرہ) سمیت EEG ریکارڈنگ ڈیوائسز، آئی-ٹریکرز، موشن کیپچر سسٹمز، ہارٹ ریٹ مانیٹرز وغیرہ سے LSL پر فزیولوجیکل ڈیٹا اسٹریم کیا جا سکتا ہے - تجربات سے ایونٹ مارکرز (مثلاً PsychoPy کا استعمال کرتے ہوئے) کو بھی LSL کا استعمال کرتے ہوئے ڈیٹا اسٹریم کے طور پر بھیجا جا سکتا ہے
2۔ ڈیٹا اسٹریم کو نیٹ ورک پر پبلش کیا جاتا ہے - LSL کا استعمال کرتے ہوئے ڈیٹا اسی طرح بھیجا جاتا ہے؛ ڈیٹا اسٹریم نیٹ ورک پر "براڈکاسٹ" ہوتی ہے - پبلش کردہ اسٹریمز نیٹ ورک پر دستیاب ہوتی ہیں اور اسی نیٹ ورک پر موجود دیگر LSL سپورٹڈ ڈیوائسز کے ذریعے تلاش کی جا سکتی ہیں - LSL ایک مشترکہ کلاک کی بنیاد پر ہر ڈیٹا ٹکرے یا نمونے کو ایک ٹائم اسٹیمپ تفویض کرتا ہے (نیٹ ورک ٹائم پروٹوکول کے تحت)۔ - اسٹریم کو ایک "آؤٹ لیٹ" کے ذریعے نمونہ بہ نمونہ (یا ٹکڑے بہ ٹکڑے) آگے دھکیلا جاتا ہے
3۔ مجموعہ ڈیوائسز ڈیٹا اسٹریمز کی "سبسکرپشن" حاصل کرتی ہیں - LSL کا استعمال کرتے ہوئے ڈیٹا اسی طرح موصول ہوتا ہے - اسی نیٹ ورک پر موجود مجموعہ ڈیوائسز "ان لیٹس" کے ذریعے پبلش کردہ ڈیٹا اسٹریمز حاصل کرتی ہیں۔ - ہر انلیٹ صرف ایک آؤٹ لیٹ سے اسٹریم کے نمونے اور میٹا ڈیٹا وصول کرتا ہے
4۔ ڈیٹا محفوظ کریں - ڈیٹا اسٹریم کی سبسکرپشن حاصل کرنے پر، آپ اسے اپنی پسندیدہ پروگرامنگ زبان میں ایک متغیر (variable) میں محفوظ کر سکتے ہیں، یا اسے معیاری فارمیٹ جیسے .xdf میں محفوظ کرنے کے لیے LSL کے فراہم کردہ سافٹ ویئر LabRecorder کا استعمال کر سکتے ہیں۔
2.0 ٹیوٹوریل کا جائزہ
اس ٹیوٹوریل میں، ہم ایک مثالی تجرباتی سیٹ اپ لیں گے اور Python میں LSL کا استعمال کرتے ہوئے اسے نافذ کرنے کے لیے ضروری مراحل اور کوڈ کے ذریعے آپ کی رہنمائی کریں گے۔ ہم Emotiv ہیڈسیٹ پہنے ہوئے دو لوگوں سے EEG ڈیٹا اکٹھا کرنے کے دوران آواز چلانے کے لیے Python کا استعمال کریں گے۔ ہم EEG ڈیٹا اکٹھا کرنے کے لیے دو کمپیوٹرز کا استعمال کریں گے جن میں سے ہر ایک پر EmotivPRO چل رہا ہوگا، اور ہر اسٹریم کو ایک علیحدہ LSL آؤٹ لیٹ کے ذریعے براڈکاسٹ کریں گے۔ ہم آڈیو فائل چلانے کے لیے پائتھن لائبریری کا استعمال کریں گے اور فائل شروع ہونے پر بیک وقت ایک ٹرگر بھیجیں گے۔
مراحل:
1. ان LSL آؤٹ لیٹس کے ذریعے ڈیٹا اسٹریم کرنے کے لیے EmotivPRO کا استعمال کریں جس میں EEG ڈیٹا (اور/یا تحریک، رابطے کا معیار، سگنل کا معیار وغیرہ) شامل ہے۔ 2۔ Python اسکرپٹ کا استعمال کرتے ہوئے ایک آڈیو ٹریک چلائیں، اور ساتھ ہی ایک اور LSL کے ذریعے ٹرگر بھیجیں، LSL انلیٹ کے ذریعے تینوں ڈیٹا اسٹریمز کو کیپچر اور محفوظ کرنے کے لیے LabRecorder کا استعمال کریں۔

2.1 مرحلہ 1 - سیٹ اپ اور انسٹالیشن
ڈیٹا کیپچر کرنے کے لیے آپ کو سپورٹ شدہ ڈیٹا ایکوزیشن ڈیوائسز کی ضرورت ہوگی
• Emotiv کی تمام دماغی ڈیوائسز EmotivPRO سافٹ ویئر کے ذریعے LSL سے منسلک ہوتی ہیںاپنی ڈیوائس پر EmotivPRO انسٹال کریں۔ LSL استعمال کرنے کے لیے آپ کو ایک درست EmotivPRO لائسنس کی ضرورت ہوگی۔
درج ذیل کمانڈ کے ساتھ Python LSL لائبریری انسٹال کریں:
pip install pylslLabRecorder سافٹ ویئر ڈاؤن لوڈ کریں۔ یہ ایک آسان، مفت ایپ ہے جسے کمانڈ لائن سے یا اسٹینڈ اکیلے ڈاؤن لوڈ کے طور پر چلایا جا سکتا ہے
ہمارے تجربے کے لیے : Python کا استعمال کرتے ہوئے آڈیو چلانے کے لیے ضروری پیکجز انسٹال کریں
pip install sounddevice soundfile
2.2 مرحلہ 3 - EmotivPRO سے ایک LSL اسٹریم کے ذریعے ڈیٹا بھیجیں
ایپ کے اوپری دائیں کونے میں "..." تلاش کریں، Settings پر جائیں
‘Lab Streaming Layer’ سیکشن اور ‘Outlet’ سب سیکشن تلاش کریں
وہ تمام ڈیٹا ٹائپس منتخب کریں جنہیں آپ براڈکاسٹ کرنا چاہتے ہیں
ڈیٹا فارمیٹ منتخب کریں (32-bit float یا 64-bit double)
منتخب کریں کہ آیا ڈیٹا نمونہ بہ نمونہ بھیجنا ہے یا نمونوں کے ٹکڑوں (chunks) میں
LSL ڈیٹا اسٹریم براڈکاسٹ کرنے کے لیے 'Start' پر کلک کریں
2.3 مرحلہ 4 - آڈیو چلانے اور ٹرگرز بھیجنے کے لیے Python اسکرپٹ کا استعمال کریں
درج ذیل کوڈ بلاک کو کاپی کر کے ایک پائتھن فائل میں پیسٹ کریں اور اسے اپنے کمپیوٹر میں محفوظ کر لیں۔
ایک آڈیو فائل تلاش کریں (مثالی طور پر ایک .wav فائل) جسے آپ چلانا چاہتے ہیں اور اسکرپٹ میں متغیر
audio_filepathکو تبدیل کر کے اپنے کمپیوٹر پر موجود اس فائل کا پاتھ درج کریںکمانڈ لائن سے بات چیت کرنے کے لیے ایک کمانڈ پرامپٹ کھولیں اور اس فولڈر پر جائیں جہاں آپ کی Python فائل محفوظ ہے
درج کریں:
python3 filename.py
• آپ کی Python انسٹالیشن پر منحصر ہے، آپpython3کی جگہpythonاستعمال کر سکتے ہیں
نوٹ:/path/to/audio.wavکو اس آڈیو فائل کے پاتھ سے تبدیل کریں جسے آپ اپنے تجربے کے دوران چلانا چاہتے ہیں۔
""" LSL Example: Play audio and send a trigger marker This script creates an LSL marker stream, waits for the user to press ENTER, then plays an audio file and sends a marker that can be synchronized with EEG data collected through LabRecorder. """ import sounddevice as sd import soundfile as sf from pylsl import StreamInfo, StreamOutlet def wait_for_keypress(): print("Press ENTER to start audio playback and send an LSL marker.") while True: if input() == "": break def play_audio_and_send_marker(audio_file, outlet): data, fs = sf.read(audio_file) print("Playing audio and sending LSL marker...") marker_val = [1] outlet.push_sample(marker_val) sd.play(data, fs) sd.wait() print("Audio playback finished.") if __name__ == "__main__": info = StreamInfo( name="AudioMarkers", type="Markers", channel_count=1, nominal_srate=0, channel_format="int32", source_id="uniqueMarkerID12345" ) outlet = StreamOutlet(info) while True: wait_for_keypress() audio_filepath = "/path/to/audio.wav" play_audio_and_send_marker( audio_filepath, outlet )
2.4 مرحلہ 5 - تمام LSL اسٹریمز کو دیکھنے اور محفوظ کرنے کے لیے LabRecorder کا استعمال کریں
LabRecorder کھولیں
Updateدبائیں۔ دستیاب LSL اسٹریمز اسٹریم لسٹ میں نظر آنی چاہئیں
• آپ کو دونوں EmotivPROs (عام طور پر "Emotiv-DataStream" کہلانے والے) اور مارکر اسٹریم ("AudioMarkers" کہلانے والے) کی اسٹریمز دیکھنے کے قابل ہونا چاہئےڈیٹا کو ذخيرہ کرنے کا مقام منتخب کرنے (اور دیگر پیرامیٹرز کو سیٹ کرنے) کے لیے
Browseپر کلک کریںتمام اسٹریمز کو منتخب کریں اور ریکارڈنگ شروع کرنے کے لیے
Recordدبائیں
3.0 ڈیٹا کے ساتھ کام کرنا
LabRecorder ایک XDF فائل (Extensible Data Format) تیار کرتا ہے جس میں تمام اسٹریمز کا ڈیٹا ہوتا ہے۔ XDF فائلیں سٹریمز میں ترتیب دی جاتی ہیں، ہر ایک کا ایک الگ ہیڈر ہوتا ہے جو بتاتا ہے کہ اس میں کیا ہے (ڈیوائس کا نام، ڈیٹا کی قسم، سیمپلنگ ریٹ، چینلز، اور بہت کچھ)۔ آپ اپنی XDF فائل کو کھولنے اور کچھ بنیادی معلومات ظاہر کرنے کے لیے نیچے دیے گئے کوڈ بلاک کو استعمال کر سکتے ہیں۔
نوٹ: /path/to/your/file.xdf کو اپنی LabRecorder XDF آؤٹ پٹ فائل کے پاتھ سے تبدیل کریں۔
import pyxdf import mne import matplotlib.pyplot as plt import numpy as np # Give the path to your LSL output file here. data_path = "/path/to/your/file.xdf" # Load the XDF file. streams, fileheader = pyxdf.load_xdf(data_path) print("XDF File Header:", fileheader) print("Number of streams found:", len(streams)) for i, stream in enumerate(streams): print("\nStream", i + 1) print("Stream Name:", stream["info"]["name"][0]) print("Stream Type:", stream["info"]["type"][0]) print("Number of Channels:", stream["info"]["channel_count"][0]) sfreq = float(stream["info"]["nominal_srate"][0]) print("Sampling Rate:", sfreq) print("Number of Samples:", len(stream["time_series"])) print("First 5 data points:", stream["time_series"][:5]) channel_names = [ chan["label"][0] for chan in stream["info"]["desc"][0]["channels"][0]["channel"] ] print("Channel Names:", channel_names) channel_types = "eeg"
4.0 اضافی وسائل
سرکاری دستاویزات
آن لائن دستاویزات کو دیکھیں، بشمول GitHub پر آفیشل README فائل
اضافی وسائل:
• مثال اسکرپٹس کے ساتھ، Emotiv کی ڈیوائسز کا استعمال کرتے ہوئے LSL چلانے کے لیے کوڈ
• یوٹیوب پر مفید LSL ڈیمو
• تمام متعلقہ لائبریریوں کے لیے SCCN LSL GitHub ریپوزٹری
• ذیلی ماڈیولز اور ایپس کے مجموعہ کے لیے LSL GitHub ریپوزٹریہائپر سکیننگ اسٹڈیز کے لیے HyPyP تجزیہ پائپ لائن
خوش آمدید! اس ٹیوٹوریل میں ہم کثیر ڈیوائسز سے Emotiv EEG ڈیٹا کو اکٹھا اور ہم آہنگ کرنے کے لیے Python میں Lab Streaming Layer (LSL) کا استعمال کرنا سیکھیں گے۔ اس کے لیے Python پروگرامنگ زبان کا بنیادی عملی علم ہونا ضروری ہے۔
آپ کیا سیکھیں گے
لیب اسٹریمنگ لیئر (LSL) کیا ہے اور محققین اس کا استعمال کیوں کرتے ہیں
متعدد Emotiv EEG ڈیوائسز سے ہم آہنگ ڈیٹا کو کیسے اکٹھا کریں
اکٹھے کیے گئے ڈیٹا کو امپورٹ اور اس کا معائنہ کیسے کریں
1.1 LSL کیا ہے اور یہ کس لیے موزوں ہے؟
لیب اسٹریمنگ لیئر (LSL) ایک اوپن سورس ٹول بکس ہے جس کا استعمال متنوع سینسر ہارڈویئر سے اعصابی، جسمانی، اور رویہ جاتی ڈیٹا کے بہاؤ (سٹریمز) کو بھیجنے، وصول کرنے اور ہم آہنگ کرنے کے لیے کیا جا سکتا ہے۔ تیزی سے زیادہ قابل، درست اور پورٹیبل دماغی اور جسمانی سینسنگ ہارڈویئر ڈیوائسز (جیسے Emotiv EEG سسٹمز) نیورو سائنس کو لیب سے باہر حقیقی وقت کے ڈیٹا کی دنیا میں لا رہی ہیں۔ جہاں کبھی EEG اور MEG جیسی دماغی پیمائشیں صرف تحقیقی لیبارٹریوں تک محدود تھیں، اب پورٹیبل ڈیوائسز ہمیں زیادہ قدرتی ماحول میں، اور ایک ساتھ متعدد لوگوں سے ڈیٹا کے متعدد نمونے اکٹھا کرنے کی اجازت دیتی ہیں۔
ایک محقق دو لوگوں کے درمیان جسمانی ہم آہنگی میں دلچسپی لے سکتا ہے جو ایک ہی موسیقی سن رہے ہوں۔ LSL ہمیں دو EEG ہیڈ سیٹس سے الگ الگ ڈیٹا اکٹھا کرنے میں مدد کر سکتا ہے جو آواز کی پیشکش کے ساتھ بھی ہم آہنگ ہوتا ہے۔
LSL کے دیگر استعمالات کی کچھ مثالیں:
کسی تجربے سے ایونٹ مارکرز کو جاری EEG ڈیٹا میں شامل کرنا
واحد شریک کے لیے متعدد ذرائع (مثلاً دل کی دھڑکن، EMG، EEG) سے حاصل ہونے والے ڈیٹا کو وقت کے لحاظ سے ہم آہنگ کرنا
متعدد شرکاء سے حاصل ہونے والے ڈیٹا کو وقت کے مطابق ترتیب دینا (مثلاً EEG Hyperscanning اسٹڈیز)
1.2 LSL کیسے کام کرتا ہے؟
Lab Streaming Layer متعدد ڈیوائسز کے درمیان ٹائم-سیریز ڈیٹا کے حقیقی وقت میں تبادلے کا ایک پروٹوکول ہے۔ LSL کو ازگر (Python) ، MATLAB، C++، Java اور دیگر پروگرامنگ زبانوں کی اوپن سورس لائبریریوں کا استعمال کرتے ہوئے نافذ کیا جا سکتا ہے۔

بنیادی افادیت LSL ڈیٹا اسٹریمز کے گرد گھومتی ہے:
1۔ ایک حصولی ڈیوائس/سافٹ ویئر ڈیٹا اکٹھا کرتا ہے اور ایک ڈیٹا اسٹریم بناتا ہے - میٹا ڈیٹا (سیمپلی گ ریٹ، ڈیٹا کی قسم، چینل کی معلومات وغیرہ) سمیت EEG ریکارڈنگ ڈیوائسز، آئی-ٹریکرز، موشن کیپچر سسٹمز، ہارٹ ریٹ مانیٹرز وغیرہ سے LSL پر فزیولوجیکل ڈیٹا اسٹریم کیا جا سکتا ہے - تجربات سے ایونٹ مارکرز (مثلاً PsychoPy کا استعمال کرتے ہوئے) کو بھی LSL کا استعمال کرتے ہوئے ڈیٹا اسٹریم کے طور پر بھیجا جا سکتا ہے
2۔ ڈیٹا اسٹریم کو نیٹ ورک پر پبلش کیا جاتا ہے - LSL کا استعمال کرتے ہوئے ڈیٹا اسی طرح بھیجا جاتا ہے؛ ڈیٹا اسٹریم نیٹ ورک پر "براڈکاسٹ" ہوتی ہے - پبلش کردہ اسٹریمز نیٹ ورک پر دستیاب ہوتی ہیں اور اسی نیٹ ورک پر موجود دیگر LSL سپورٹڈ ڈیوائسز کے ذریعے تلاش کی جا سکتی ہیں - LSL ایک مشترکہ کلاک کی بنیاد پر ہر ڈیٹا ٹکرے یا نمونے کو ایک ٹائم اسٹیمپ تفویض کرتا ہے (نیٹ ورک ٹائم پروٹوکول کے تحت)۔ - اسٹریم کو ایک "آؤٹ لیٹ" کے ذریعے نمونہ بہ نمونہ (یا ٹکڑے بہ ٹکڑے) آگے دھکیلا جاتا ہے
3۔ مجموعہ ڈیوائسز ڈیٹا اسٹریمز کی "سبسکرپشن" حاصل کرتی ہیں - LSL کا استعمال کرتے ہوئے ڈیٹا اسی طرح موصول ہوتا ہے - اسی نیٹ ورک پر موجود مجموعہ ڈیوائسز "ان لیٹس" کے ذریعے پبلش کردہ ڈیٹا اسٹریمز حاصل کرتی ہیں۔ - ہر انلیٹ صرف ایک آؤٹ لیٹ سے اسٹریم کے نمونے اور میٹا ڈیٹا وصول کرتا ہے
4۔ ڈیٹا محفوظ کریں - ڈیٹا اسٹریم کی سبسکرپشن حاصل کرنے پر، آپ اسے اپنی پسندیدہ پروگرامنگ زبان میں ایک متغیر (variable) میں محفوظ کر سکتے ہیں، یا اسے معیاری فارمیٹ جیسے .xdf میں محفوظ کرنے کے لیے LSL کے فراہم کردہ سافٹ ویئر LabRecorder کا استعمال کر سکتے ہیں۔
2.0 ٹیوٹوریل کا جائزہ
اس ٹیوٹوریل میں، ہم ایک مثالی تجرباتی سیٹ اپ لیں گے اور Python میں LSL کا استعمال کرتے ہوئے اسے نافذ کرنے کے لیے ضروری مراحل اور کوڈ کے ذریعے آپ کی رہنمائی کریں گے۔ ہم Emotiv ہیڈسیٹ پہنے ہوئے دو لوگوں سے EEG ڈیٹا اکٹھا کرنے کے دوران آواز چلانے کے لیے Python کا استعمال کریں گے۔ ہم EEG ڈیٹا اکٹھا کرنے کے لیے دو کمپیوٹرز کا استعمال کریں گے جن میں سے ہر ایک پر EmotivPRO چل رہا ہوگا، اور ہر اسٹریم کو ایک علیحدہ LSL آؤٹ لیٹ کے ذریعے براڈکاسٹ کریں گے۔ ہم آڈیو فائل چلانے کے لیے پائتھن لائبریری کا استعمال کریں گے اور فائل شروع ہونے پر بیک وقت ایک ٹرگر بھیجیں گے۔
مراحل:
1. ان LSL آؤٹ لیٹس کے ذریعے ڈیٹا اسٹریم کرنے کے لیے EmotivPRO کا استعمال کریں جس میں EEG ڈیٹا (اور/یا تحریک، رابطے کا معیار، سگنل کا معیار وغیرہ) شامل ہے۔ 2۔ Python اسکرپٹ کا استعمال کرتے ہوئے ایک آڈیو ٹریک چلائیں، اور ساتھ ہی ایک اور LSL کے ذریعے ٹرگر بھیجیں، LSL انلیٹ کے ذریعے تینوں ڈیٹا اسٹریمز کو کیپچر اور محفوظ کرنے کے لیے LabRecorder کا استعمال کریں۔

2.1 مرحلہ 1 - سیٹ اپ اور انسٹالیشن
ڈیٹا کیپچر کرنے کے لیے آپ کو سپورٹ شدہ ڈیٹا ایکوزیشن ڈیوائسز کی ضرورت ہوگی
• Emotiv کی تمام دماغی ڈیوائسز EmotivPRO سافٹ ویئر کے ذریعے LSL سے منسلک ہوتی ہیںاپنی ڈیوائس پر EmotivPRO انسٹال کریں۔ LSL استعمال کرنے کے لیے آپ کو ایک درست EmotivPRO لائسنس کی ضرورت ہوگی۔
درج ذیل کمانڈ کے ساتھ Python LSL لائبریری انسٹال کریں:
pip install pylslLabRecorder سافٹ ویئر ڈاؤن لوڈ کریں۔ یہ ایک آسان، مفت ایپ ہے جسے کمانڈ لائن سے یا اسٹینڈ اکیلے ڈاؤن لوڈ کے طور پر چلایا جا سکتا ہے
ہمارے تجربے کے لیے : Python کا استعمال کرتے ہوئے آڈیو چلانے کے لیے ضروری پیکجز انسٹال کریں
pip install sounddevice soundfile
2.2 مرحلہ 3 - EmotivPRO سے ایک LSL اسٹریم کے ذریعے ڈیٹا بھیجیں
ایپ کے اوپری دائیں کونے میں "..." تلاش کریں، Settings پر جائیں
‘Lab Streaming Layer’ سیکشن اور ‘Outlet’ سب سیکشن تلاش کریں
وہ تمام ڈیٹا ٹائپس منتخب کریں جنہیں آپ براڈکاسٹ کرنا چاہتے ہیں
ڈیٹا فارمیٹ منتخب کریں (32-bit float یا 64-bit double)
منتخب کریں کہ آیا ڈیٹا نمونہ بہ نمونہ بھیجنا ہے یا نمونوں کے ٹکڑوں (chunks) میں
LSL ڈیٹا اسٹریم براڈکاسٹ کرنے کے لیے 'Start' پر کلک کریں
2.3 مرحلہ 4 - آڈیو چلانے اور ٹرگرز بھیجنے کے لیے Python اسکرپٹ کا استعمال کریں
درج ذیل کوڈ بلاک کو کاپی کر کے ایک پائتھن فائل میں پیسٹ کریں اور اسے اپنے کمپیوٹر میں محفوظ کر لیں۔
ایک آڈیو فائل تلاش کریں (مثالی طور پر ایک .wav فائل) جسے آپ چلانا چاہتے ہیں اور اسکرپٹ میں متغیر
audio_filepathکو تبدیل کر کے اپنے کمپیوٹر پر موجود اس فائل کا پاتھ درج کریںکمانڈ لائن سے بات چیت کرنے کے لیے ایک کمانڈ پرامپٹ کھولیں اور اس فولڈر پر جائیں جہاں آپ کی Python فائل محفوظ ہے
درج کریں:
python3 filename.py
• آپ کی Python انسٹالیشن پر منحصر ہے، آپpython3کی جگہpythonاستعمال کر سکتے ہیں
نوٹ:/path/to/audio.wavکو اس آڈیو فائل کے پاتھ سے تبدیل کریں جسے آپ اپنے تجربے کے دوران چلانا چاہتے ہیں۔
""" LSL Example: Play audio and send a trigger marker This script creates an LSL marker stream, waits for the user to press ENTER, then plays an audio file and sends a marker that can be synchronized with EEG data collected through LabRecorder. """ import sounddevice as sd import soundfile as sf from pylsl import StreamInfo, StreamOutlet def wait_for_keypress(): print("Press ENTER to start audio playback and send an LSL marker.") while True: if input() == "": break def play_audio_and_send_marker(audio_file, outlet): data, fs = sf.read(audio_file) print("Playing audio and sending LSL marker...") marker_val = [1] outlet.push_sample(marker_val) sd.play(data, fs) sd.wait() print("Audio playback finished.") if __name__ == "__main__": info = StreamInfo( name="AudioMarkers", type="Markers", channel_count=1, nominal_srate=0, channel_format="int32", source_id="uniqueMarkerID12345" ) outlet = StreamOutlet(info) while True: wait_for_keypress() audio_filepath = "/path/to/audio.wav" play_audio_and_send_marker( audio_filepath, outlet )
2.4 مرحلہ 5 - تمام LSL اسٹریمز کو دیکھنے اور محفوظ کرنے کے لیے LabRecorder کا استعمال کریں
LabRecorder کھولیں
Updateدبائیں۔ دستیاب LSL اسٹریمز اسٹریم لسٹ میں نظر آنی چاہئیں
• آپ کو دونوں EmotivPROs (عام طور پر "Emotiv-DataStream" کہلانے والے) اور مارکر اسٹریم ("AudioMarkers" کہلانے والے) کی اسٹریمز دیکھنے کے قابل ہونا چاہئےڈیٹا کو ذخيرہ کرنے کا مقام منتخب کرنے (اور دیگر پیرامیٹرز کو سیٹ کرنے) کے لیے
Browseپر کلک کریںتمام اسٹریمز کو منتخب کریں اور ریکارڈنگ شروع کرنے کے لیے
Recordدبائیں
3.0 ڈیٹا کے ساتھ کام کرنا
LabRecorder ایک XDF فائل (Extensible Data Format) تیار کرتا ہے جس میں تمام اسٹریمز کا ڈیٹا ہوتا ہے۔ XDF فائلیں سٹریمز میں ترتیب دی جاتی ہیں، ہر ایک کا ایک الگ ہیڈر ہوتا ہے جو بتاتا ہے کہ اس میں کیا ہے (ڈیوائس کا نام، ڈیٹا کی قسم، سیمپلنگ ریٹ، چینلز، اور بہت کچھ)۔ آپ اپنی XDF فائل کو کھولنے اور کچھ بنیادی معلومات ظاہر کرنے کے لیے نیچے دیے گئے کوڈ بلاک کو استعمال کر سکتے ہیں۔
نوٹ: /path/to/your/file.xdf کو اپنی LabRecorder XDF آؤٹ پٹ فائل کے پاتھ سے تبدیل کریں۔
import pyxdf import mne import matplotlib.pyplot as plt import numpy as np # Give the path to your LSL output file here. data_path = "/path/to/your/file.xdf" # Load the XDF file. streams, fileheader = pyxdf.load_xdf(data_path) print("XDF File Header:", fileheader) print("Number of streams found:", len(streams)) for i, stream in enumerate(streams): print("\nStream", i + 1) print("Stream Name:", stream["info"]["name"][0]) print("Stream Type:", stream["info"]["type"][0]) print("Number of Channels:", stream["info"]["channel_count"][0]) sfreq = float(stream["info"]["nominal_srate"][0]) print("Sampling Rate:", sfreq) print("Number of Samples:", len(stream["time_series"])) print("First 5 data points:", stream["time_series"][:5]) channel_names = [ chan["label"][0] for chan in stream["info"]["desc"][0]["channels"][0]["channel"] ] print("Channel Names:", channel_names) channel_types = "eeg"
4.0 اضافی وسائل
سرکاری دستاویزات
آن لائن دستاویزات کو دیکھیں، بشمول GitHub پر آفیشل README فائل
اضافی وسائل:
• مثال اسکرپٹس کے ساتھ، Emotiv کی ڈیوائسز کا استعمال کرتے ہوئے LSL چلانے کے لیے کوڈ
• یوٹیوب پر مفید LSL ڈیمو
• تمام متعلقہ لائبریریوں کے لیے SCCN LSL GitHub ریپوزٹری
• ذیلی ماڈیولز اور ایپس کے مجموعہ کے لیے LSL GitHub ریپوزٹریہائپر سکیننگ اسٹڈیز کے لیے HyPyP تجزیہ پائپ لائن

پڑھنا جاری رکھیں