אתגר את הזיכרון שלך! שחק במשחק ה-N-Back החדש באפליקציית Emotiv
אתגר את הזיכרון שלך! שחק במשחק ה-N-Back החדש באפליקציית Emotiv
אתגר את הזיכרון שלך! שחק במשחק ה-N-Back החדש באפליקציית Emotiv
שכבת סטרימינג למעבדה (LSL) לסנכרון זרמי נתונים מרובים
רושיני רנדניה
שתף:

מאת רושיני רנדנייה ולוקאס קליין
תפעול:
כאשר מופעל בשורת הפקודה, הסקריפט הזה מיד מפעיל סטרים של LSL. בכל פעם שלוחצים על מקש 'Enter', הוא שולח טריגר ומנגן קובץ שמע.
ייבוא sounddevice בתור sd
ייבוא soundfile בתור sf
מ- pylsl ייבוא StreamInfo, StreamOutlet
def wait_for_keypress():
print("לחץ ENTER כדי להתחיל הפעלת שמע ולשלוח סימן LSL.")
while True: # This loop waits for a keyboard input input_str = input() # Wait for input from the terminal if input_str == "": # If the enter key is pressed, proceed break
def AudioMarker(audio_file, outlet): # פונקציה להשמעת שמע ושליחת סימן
data, fs = sf.read(audio_file) # טען את קובץ השמע
print("Playing audio and sending LSL marker...") marker_val = [1] outlet.push_sample(marker_val) # Send marker indicating the start of audio playback sd.play(data, fs) # play the audio sd.wait() # Wait until audio is done playing print("Audio playback finished.")
אם name == "main": # לולאת הראשית
# הגדרת סטרים של LSL עבור סימנים
stream_name = 'AudioMarkers'
stream_type = 'Markers'
n_chans = 1
sr = 0 # קביעת תדר דגימה 0 כי הסימנים אינם קבועים
chan_format = 'int32'
marker_id = 'uniqueMarkerID12345'
info = StreamInfo(stream_name, stream_type, n_chans, sr, chan_format, marker_id) outlet = StreamOutlet(info) # create LSL outlet # Keep the script running and wait for ENTER key to play audio and send marker while True: wait_for_keypress() audio_filepath = "/path/to/your/audio_file.wav" # replace with correct path to your audio file AudioMarker(audio_filepath, outlet) # After playing audio and sending a marker, the script goes back to waiting for the next keypress</code></pre><p><em><strong>**By running this file (even before playing the audio), you've initiated an LSL stream through an outlet</strong></em><strong>. Now we'll view that stream in LabRecorder</strong></p><p><strong>STEP 5 - Use LabRecorder to view and save all LSL streams</strong></p><ol><li data-preset-tag="p"><p>Open LabRecorder</p></li><li data-preset-tag="p"><p>Press <em><strong>Update</strong></em>. The available LSL streams should be visible in the stream list<br> • You should be able to see streams from both EmotivPROs (usually called "EmotivDataStream") and the marker stream (called "AudioMarkers")</p></li><li data-preset-tag="p"><p>Click <em><strong>Browse</strong></em> to select a location to store data (and set other parameters)</p></li><li data-preset-tag="p"><p>Select all streams and press <em><strong>Record</strong></em> to start recording</p></li><li data-preset-tag="p"><p>Click Stop when you want to end the recording</p></li></ol><p><br></p><img alt="" src="https://framerusercontent.com/images/HFGuJF9ErVu2Jxrgtqt11tl0No.jpg"><h2><strong>Working with the data</strong></h2><p><strong>LabRecorder outputs an XDF file (Extensible Data Format) that contains data from all the streams. XDF files are structured into, </strong><em><strong>streams</strong></em><strong>, each with a different </strong><em><strong>header</strong></em><strong> that describes what it contains (device name, data type, sampling rate, channels, and more). You can use the below codeblock to open your XDF file and display some basic information.</strong></p><pre data-language="JSX"><code>
ברגע שאתה מריץ את הקובץ הזה (אפילו לפני הפעלת השמע), התחלת סטרים של LSL דרך outlet. עכשיו נצפה בסטרים הזה ב-LabRecorder
שלב 5 - השתמש ב-LabRecorder כדי לצפות ולשמור את כל הסטרים של LSL
פתח את LabRecorder
לחץ על עדכן. סטרים זמינים של LSL צריכים להיות גלויים ברשימת הסטרימים
• אתה צריך לראות סטרימים משני EmotivPROs (בדרך כלל נקראים "EmotivDataStream") וסטרים של הסימנים (נקרא "AudioMarkers")לחץ על עיון כדי לבחור מיקום לאחסן את הנתונים (ולהגדיר פרמטרים נוספים)
בחר את כל הסטרימים ולחץ על הקליט כדי להתחיל הקלטה
לחץ על עצור כשאתה רוצה להפסיק את ההקלטה

עבודה עם הנתונים
LabRecorder מוציא קובץ XDF (פורמט נתונים מורחב) המכיל נתונים מכל הסטרימים. קבצי XDF מסודרים לסטרימים, כל אחד עם כותרת שונה שמתארת מה הוא מכיל (שם התקן, סוג נתון, תדר דגימה, ערוצים ועוד). אתה יכול להשתמש בבלוק הקוד הבא לפתוח את קובץ ה-XDF שלך ולהציג קצת מידע בסיסי.
סקריפט דוגמה זה מדגים כמה פונקציות בסיסיות לייבוא והוספת תגובות לנתוני EEG שנאספו מתוכנת EmotivPRO. הוא משתמש ב-MNE כדי לטעון קובץ XDF, להדפיס קצת מטאדאטה בסיסי, ליצור את אובייקט ה-info ולמשוך את ספקטרום הכוח.
ייבוא pyxdf
ייבוא mne
ייבוא matplotlib.pyplot בתור plt
ייבוא numpy כ-np
נתיב לקובץ ה-XDF שלך
data_path = '/path/to/your/xdf_file.xdf'
טען את קובץ ה-XDF
streams, fileheader = pyxdf.load_xdf(data_path)
print("כותרת קובץ XDF:", fileheader)
print("מספר סטרימים שנמצאו:", len(streams))
עבור i, stream ב-enumerate(streams):
print("\nסטרים", i + 1)
print("שם סטרים:", stream['info']['name'][0])
print("סוג סטרים:", stream['info']['type'][0])
print("מספר ערוצים:", stream['info']['channel_count'][0])
sfreq = float(stream['info']['nominal_srate'][0])
print("תדר דגימה:", sfreq)
print("מספר דוגמאות:", len(stream['time_series']))
print("הדפס את 5 נקודות הנתונים הראשונות:", 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'
צור אובייקט info של MNE
info = mne.create_info(channel_names, sfreq, channel_types)
data = np.array(stream['time_series']).T # הנתונים צריכים להיות מוסטות: ערוצים x דוגמאות
raw = mne.io.RawArray(data, info)
raw.plot_psd(fmax=50) # צייר ספקטרוגרמת פשוטה (צפיפות ספקטרום כוח)משאבים נוספיםהורד את המדריך הזה כ-notebook של Jupyter מ-GitHub של EMOTIVבדוק את התיעוד המקוון של LSL, כולל קובץ ההסבר הרשמי ב-GitHubתזדקק לאחד או יותר התקני רכישת נתונים נתמכים לאיסוף נתוניםכל מכשירי הבריינוואר של EMOTIV מתחברים לתוכנת EmotivPRO, שיש לה יכולות מובנות של LSL לשלוח ולקבל סטרים של נתוניםמשאבים נוספים:קוד להריץ LSL עם מכשירי Emotiv, עם סקריפטים לדוגמההדגמה שימושית של LSL ב-YouTubeמאגר GitHub של SCCN LSL עבור כל הספריות הקשורותמאגר GitHub עבור אוסף של תיקיות וקבצים אפליקטיבייםמסלול ניתוח HyPyP ללימודי הייפרסקינינג
מאת רושיני רנדנייה ולוקאס קליין
תפעול:
כאשר מופעל בשורת הפקודה, הסקריפט הזה מיד מפעיל סטרים של LSL. בכל פעם שלוחצים על מקש 'Enter', הוא שולח טריגר ומנגן קובץ שמע.
ייבוא sounddevice בתור sd
ייבוא soundfile בתור sf
מ- pylsl ייבוא StreamInfo, StreamOutlet
def wait_for_keypress():
print("לחץ ENTER כדי להתחיל הפעלת שמע ולשלוח סימן LSL.")
while True: # This loop waits for a keyboard input input_str = input() # Wait for input from the terminal if input_str == "": # If the enter key is pressed, proceed break
def AudioMarker(audio_file, outlet): # פונקציה להשמעת שמע ושליחת סימן
data, fs = sf.read(audio_file) # טען את קובץ השמע
print("Playing audio and sending LSL marker...") marker_val = [1] outlet.push_sample(marker_val) # Send marker indicating the start of audio playback sd.play(data, fs) # play the audio sd.wait() # Wait until audio is done playing print("Audio playback finished.")
אם name == "main": # לולאת הראשית
# הגדרת סטרים של LSL עבור סימנים
stream_name = 'AudioMarkers'
stream_type = 'Markers'
n_chans = 1
sr = 0 # קביעת תדר דגימה 0 כי הסימנים אינם קבועים
chan_format = 'int32'
marker_id = 'uniqueMarkerID12345'
info = StreamInfo(stream_name, stream_type, n_chans, sr, chan_format, marker_id) outlet = StreamOutlet(info) # create LSL outlet # Keep the script running and wait for ENTER key to play audio and send marker while True: wait_for_keypress() audio_filepath = "/path/to/your/audio_file.wav" # replace with correct path to your audio file AudioMarker(audio_filepath, outlet) # After playing audio and sending a marker, the script goes back to waiting for the next keypress</code></pre><p><em><strong>**By running this file (even before playing the audio), you've initiated an LSL stream through an outlet</strong></em><strong>. Now we'll view that stream in LabRecorder</strong></p><p><strong>STEP 5 - Use LabRecorder to view and save all LSL streams</strong></p><ol><li data-preset-tag="p"><p>Open LabRecorder</p></li><li data-preset-tag="p"><p>Press <em><strong>Update</strong></em>. The available LSL streams should be visible in the stream list<br> • You should be able to see streams from both EmotivPROs (usually called "EmotivDataStream") and the marker stream (called "AudioMarkers")</p></li><li data-preset-tag="p"><p>Click <em><strong>Browse</strong></em> to select a location to store data (and set other parameters)</p></li><li data-preset-tag="p"><p>Select all streams and press <em><strong>Record</strong></em> to start recording</p></li><li data-preset-tag="p"><p>Click Stop when you want to end the recording</p></li></ol><p><br></p><img alt="" src="https://framerusercontent.com/images/HFGuJF9ErVu2Jxrgtqt11tl0No.jpg"><h2><strong>Working with the data</strong></h2><p><strong>LabRecorder outputs an XDF file (Extensible Data Format) that contains data from all the streams. XDF files are structured into, </strong><em><strong>streams</strong></em><strong>, each with a different </strong><em><strong>header</strong></em><strong> that describes what it contains (device name, data type, sampling rate, channels, and more). You can use the below codeblock to open your XDF file and display some basic information.</strong></p><pre data-language="JSX"><code>
ברגע שאתה מריץ את הקובץ הזה (אפילו לפני הפעלת השמע), התחלת סטרים של LSL דרך outlet. עכשיו נצפה בסטרים הזה ב-LabRecorder
שלב 5 - השתמש ב-LabRecorder כדי לצפות ולשמור את כל הסטרים של LSL
פתח את LabRecorder
לחץ על עדכן. סטרים זמינים של LSL צריכים להיות גלויים ברשימת הסטרימים
• אתה צריך לראות סטרימים משני EmotivPROs (בדרך כלל נקראים "EmotivDataStream") וסטרים של הסימנים (נקרא "AudioMarkers")לחץ על עיון כדי לבחור מיקום לאחסן את הנתונים (ולהגדיר פרמטרים נוספים)
בחר את כל הסטרימים ולחץ על הקליט כדי להתחיל הקלטה
לחץ על עצור כשאתה רוצה להפסיק את ההקלטה

עבודה עם הנתונים
LabRecorder מוציא קובץ XDF (פורמט נתונים מורחב) המכיל נתונים מכל הסטרימים. קבצי XDF מסודרים לסטרימים, כל אחד עם כותרת שונה שמתארת מה הוא מכיל (שם התקן, סוג נתון, תדר דגימה, ערוצים ועוד). אתה יכול להשתמש בבלוק הקוד הבא לפתוח את קובץ ה-XDF שלך ולהציג קצת מידע בסיסי.
סקריפט דוגמה זה מדגים כמה פונקציות בסיסיות לייבוא והוספת תגובות לנתוני EEG שנאספו מתוכנת EmotivPRO. הוא משתמש ב-MNE כדי לטעון קובץ XDF, להדפיס קצת מטאדאטה בסיסי, ליצור את אובייקט ה-info ולמשוך את ספקטרום הכוח.
ייבוא pyxdf
ייבוא mne
ייבוא matplotlib.pyplot בתור plt
ייבוא numpy כ-np
נתיב לקובץ ה-XDF שלך
data_path = '/path/to/your/xdf_file.xdf'
טען את קובץ ה-XDF
streams, fileheader = pyxdf.load_xdf(data_path)
print("כותרת קובץ XDF:", fileheader)
print("מספר סטרימים שנמצאו:", len(streams))
עבור i, stream ב-enumerate(streams):
print("\nסטרים", i + 1)
print("שם סטרים:", stream['info']['name'][0])
print("סוג סטרים:", stream['info']['type'][0])
print("מספר ערוצים:", stream['info']['channel_count'][0])
sfreq = float(stream['info']['nominal_srate'][0])
print("תדר דגימה:", sfreq)
print("מספר דוגמאות:", len(stream['time_series']))
print("הדפס את 5 נקודות הנתונים הראשונות:", 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'
צור אובייקט info של MNE
info = mne.create_info(channel_names, sfreq, channel_types)
data = np.array(stream['time_series']).T # הנתונים צריכים להיות מוסטות: ערוצים x דוגמאות
raw = mne.io.RawArray(data, info)
raw.plot_psd(fmax=50) # צייר ספקטרוגרמת פשוטה (צפיפות ספקטרום כוח)משאבים נוספיםהורד את המדריך הזה כ-notebook של Jupyter מ-GitHub של EMOTIVבדוק את התיעוד המקוון של LSL, כולל קובץ ההסבר הרשמי ב-GitHubתזדקק לאחד או יותר התקני רכישת נתונים נתמכים לאיסוף נתוניםכל מכשירי הבריינוואר של EMOTIV מתחברים לתוכנת EmotivPRO, שיש לה יכולות מובנות של LSL לשלוח ולקבל סטרים של נתוניםמשאבים נוספים:קוד להריץ LSL עם מכשירי Emotiv, עם סקריפטים לדוגמההדגמה שימושית של LSL ב-YouTubeמאגר GitHub של SCCN LSL עבור כל הספריות הקשורותמאגר GitHub עבור אוסף של תיקיות וקבצים אפליקטיבייםמסלול ניתוח HyPyP ללימודי הייפרסקינינג
מאת רושיני רנדנייה ולוקאס קליין
תפעול:
כאשר מופעל בשורת הפקודה, הסקריפט הזה מיד מפעיל סטרים של LSL. בכל פעם שלוחצים על מקש 'Enter', הוא שולח טריגר ומנגן קובץ שמע.
ייבוא sounddevice בתור sd
ייבוא soundfile בתור sf
מ- pylsl ייבוא StreamInfo, StreamOutlet
def wait_for_keypress():
print("לחץ ENTER כדי להתחיל הפעלת שמע ולשלוח סימן LSL.")
while True: # This loop waits for a keyboard input input_str = input() # Wait for input from the terminal if input_str == "": # If the enter key is pressed, proceed break
def AudioMarker(audio_file, outlet): # פונקציה להשמעת שמע ושליחת סימן
data, fs = sf.read(audio_file) # טען את קובץ השמע
print("Playing audio and sending LSL marker...") marker_val = [1] outlet.push_sample(marker_val) # Send marker indicating the start of audio playback sd.play(data, fs) # play the audio sd.wait() # Wait until audio is done playing print("Audio playback finished.")
אם name == "main": # לולאת הראשית
# הגדרת סטרים של LSL עבור סימנים
stream_name = 'AudioMarkers'
stream_type = 'Markers'
n_chans = 1
sr = 0 # קביעת תדר דגימה 0 כי הסימנים אינם קבועים
chan_format = 'int32'
marker_id = 'uniqueMarkerID12345'
info = StreamInfo(stream_name, stream_type, n_chans, sr, chan_format, marker_id) outlet = StreamOutlet(info) # create LSL outlet # Keep the script running and wait for ENTER key to play audio and send marker while True: wait_for_keypress() audio_filepath = "/path/to/your/audio_file.wav" # replace with correct path to your audio file AudioMarker(audio_filepath, outlet) # After playing audio and sending a marker, the script goes back to waiting for the next keypress</code></pre><p><em><strong>**By running this file (even before playing the audio), you've initiated an LSL stream through an outlet</strong></em><strong>. Now we'll view that stream in LabRecorder</strong></p><p><strong>STEP 5 - Use LabRecorder to view and save all LSL streams</strong></p><ol><li data-preset-tag="p"><p>Open LabRecorder</p></li><li data-preset-tag="p"><p>Press <em><strong>Update</strong></em>. The available LSL streams should be visible in the stream list<br> • You should be able to see streams from both EmotivPROs (usually called "EmotivDataStream") and the marker stream (called "AudioMarkers")</p></li><li data-preset-tag="p"><p>Click <em><strong>Browse</strong></em> to select a location to store data (and set other parameters)</p></li><li data-preset-tag="p"><p>Select all streams and press <em><strong>Record</strong></em> to start recording</p></li><li data-preset-tag="p"><p>Click Stop when you want to end the recording</p></li></ol><p><br></p><img alt="" src="https://framerusercontent.com/images/HFGuJF9ErVu2Jxrgtqt11tl0No.jpg"><h2><strong>Working with the data</strong></h2><p><strong>LabRecorder outputs an XDF file (Extensible Data Format) that contains data from all the streams. XDF files are structured into, </strong><em><strong>streams</strong></em><strong>, each with a different </strong><em><strong>header</strong></em><strong> that describes what it contains (device name, data type, sampling rate, channels, and more). You can use the below codeblock to open your XDF file and display some basic information.</strong></p><pre data-language="JSX"><code>
ברגע שאתה מריץ את הקובץ הזה (אפילו לפני הפעלת השמע), התחלת סטרים של LSL דרך outlet. עכשיו נצפה בסטרים הזה ב-LabRecorder
שלב 5 - השתמש ב-LabRecorder כדי לצפות ולשמור את כל הסטרים של LSL
פתח את LabRecorder
לחץ על עדכן. סטרים זמינים של LSL צריכים להיות גלויים ברשימת הסטרימים
• אתה צריך לראות סטרימים משני EmotivPROs (בדרך כלל נקראים "EmotivDataStream") וסטרים של הסימנים (נקרא "AudioMarkers")לחץ על עיון כדי לבחור מיקום לאחסן את הנתונים (ולהגדיר פרמטרים נוספים)
בחר את כל הסטרימים ולחץ על הקליט כדי להתחיל הקלטה
לחץ על עצור כשאתה רוצה להפסיק את ההקלטה

עבודה עם הנתונים
LabRecorder מוציא קובץ XDF (פורמט נתונים מורחב) המכיל נתונים מכל הסטרימים. קבצי XDF מסודרים לסטרימים, כל אחד עם כותרת שונה שמתארת מה הוא מכיל (שם התקן, סוג נתון, תדר דגימה, ערוצים ועוד). אתה יכול להשתמש בבלוק הקוד הבא לפתוח את קובץ ה-XDF שלך ולהציג קצת מידע בסיסי.
סקריפט דוגמה זה מדגים כמה פונקציות בסיסיות לייבוא והוספת תגובות לנתוני EEG שנאספו מתוכנת EmotivPRO. הוא משתמש ב-MNE כדי לטעון קובץ XDF, להדפיס קצת מטאדאטה בסיסי, ליצור את אובייקט ה-info ולמשוך את ספקטרום הכוח.
ייבוא pyxdf
ייבוא mne
ייבוא matplotlib.pyplot בתור plt
ייבוא numpy כ-np
נתיב לקובץ ה-XDF שלך
data_path = '/path/to/your/xdf_file.xdf'
טען את קובץ ה-XDF
streams, fileheader = pyxdf.load_xdf(data_path)
print("כותרת קובץ XDF:", fileheader)
print("מספר סטרימים שנמצאו:", len(streams))
עבור i, stream ב-enumerate(streams):
print("\nסטרים", i + 1)
print("שם סטרים:", stream['info']['name'][0])
print("סוג סטרים:", stream['info']['type'][0])
print("מספר ערוצים:", stream['info']['channel_count'][0])
sfreq = float(stream['info']['nominal_srate'][0])
print("תדר דגימה:", sfreq)
print("מספר דוגמאות:", len(stream['time_series']))
print("הדפס את 5 נקודות הנתונים הראשונות:", 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'
צור אובייקט info של MNE
info = mne.create_info(channel_names, sfreq, channel_types)
data = np.array(stream['time_series']).T # הנתונים צריכים להיות מוסטות: ערוצים x דוגמאות
raw = mne.io.RawArray(data, info)
raw.plot_psd(fmax=50) # צייר ספקטרוגרמת פשוטה (צפיפות ספקטרום כוח)משאבים נוספיםהורד את המדריך הזה כ-notebook של Jupyter מ-GitHub של EMOTIVבדוק את התיעוד המקוון של LSL, כולל קובץ ההסבר הרשמי ב-GitHubתזדקק לאחד או יותר התקני רכישת נתונים נתמכים לאיסוף נתוניםכל מכשירי הבריינוואר של EMOTIV מתחברים לתוכנת EmotivPRO, שיש לה יכולות מובנות של LSL לשלוח ולקבל סטרים של נתוניםמשאבים נוספים:קוד להריץ LSL עם מכשירי Emotiv, עם סקריפטים לדוגמההדגמה שימושית של LSL ב-YouTubeמאגר GitHub של SCCN LSL עבור כל הספריות הקשורותמאגר GitHub עבור אוסף של תיקיות וקבצים אפליקטיבייםמסלול ניתוח HyPyP ללימודי הייפרסקינינג
המשך לקרוא
יסודות של תנודות עצביות
