Source Localization
Version: brainstorm3
Package is in Shane/resources/brainstorm3
Need to add its path to matlab and then just run the command brainstorm
Running/ installing brainstorm will automatically make a brainstorm_db folder in the same folder where brainstorm3 is saved (in my case resources)
Brainstorm Organization
- Each subject is then saved as a protocol that is then saved in that database folder
- With each protocol there is an anat and data folder
- anat: anatomy
- contains the anatomy files that were uploaded (from their freesurfer output)
- data: your brain data
- contains eeg files that you load in
Brainstorm Scripts
- I have one script for each task epoch (fix, delay, resting state, etc)
- Sets the necessary paths to the freesurfer folders, list of glasser parcellations, merge 7t, and preprocessed data
- We need the subject folders that have 'long' in the title so it checks for that and if yes, moves on
if contains(FSsubfolder,'long')
- Define the subject folder (protocol), DBfolder is the brainstorm_db, and then I named it sourceLocal_beamforming_ subjectID based on their MRI date, not eeg date to match the freesurfer file
subjectDBfolder = [DBfolder '/sourceLocal_beamforming_' SubjectNameMRI];
- Here we are setting the protocol name
- The iProtocol bst_get checks to see the protocol already exists in the database
- If no (iProtocol is empty), then create protocol, and add the subject within it
- That just creates a blank subject line in the protocol to then fill with the anat and data
- If the protocol does exist, then load it and set it as the current protocol
ProtocolName = sprintf('sourceLocal_beamforming_%s', SubjectNameMRI);
iProtocol = bst_get('Protocol', ProtocolName);
if isempty(iProtocol)
gui_brainstorm('CreateProtocol', ProtocolName, 0, 0);
db_add_subject(SubjectNameMRI, [], 1);
else
gui_brainstorm('SetCurrentProtocol', iProtocol);
end
- bst_get('ProtocolStudies') pulls out the studies within one protocol
- A study is like each EEG file you have loaded into that protocol, so everyone should have fix, delays, and rest
- But this code below checks to see if fix (or delay or rest or whatever what you're running) already exists and removes it (cause maybe you wanna redo it)
sStudies = bst_get('ProtocolStudies');
for iStudy = 1:length(sStudies.Study)
studyName = sStudies.Study(iStudy).Name;
if contains(studyName, 'fix')
fprintf('Deleting study: %s\n', studyName);
db_delete_studies(iStudy);
end
end
- Find the lunaID
- Find the MRI date
- Find the row in merge 7t with the corresponding lunaID and MRI date
- Using that row, find the EEG date
- Create the path to the corresponding EEG file
luna = str2double(SubjectNameMRI(1:5));
MRIdate = str2double(SubjectNameMRI(7:14));
rowIdx = merge7t(:,1) == luna & merge7t(:,4) == MRIdate;
if any(rowIdx)
eeg_date = merge7t(rowIdx,5);
pattern = sprintf('%s_%s*_rerefwhole_ICA_icapru.set', string(luna), string(eeg_date));
files = dir(fullfile(EEGfolder, pattern));
EEGpath = fullfile(EEGfolder, files.name);
else
continue
end