EEG Simulation based on Head model

Hi guys

I have generated a head model using our structural MRI data along with electrode locations. However, our EEG signals are not available in the Brainstorm software. Currently, I aim to simulate EEG data (128 x time points) using this model, specifically focusing on regions V1, V2, and V3. I have computed a lead field matrix containing dipole values in V1, V2, and V3, with the remaining dipoles zeroed out.
Could you guide the steps to achieve this simulation?
Is it feasible to simulate dipole moments using dipole locations and then apply the multiplication of dipole moments in the leadfield matrix?

Thank you so much for your help in advance.

Please review the different options described in the relevant tutorial section and let us know if there are gaps in what you are trying to achieve.

Thank you for your valuable answer.
As I mentioned, I've been working on forward modeling using Brainstorm.
I've successfully computed the head model step by step and now have the leadfield matrix ready. However, I'm facing a challenge as I don't have EEG signals, only MRI scans, within Brainstorm. Instead, I have my EEG signals in the frequency domain in Matlab.

I've been attempting to simulate EEG signals based on the equation: EEG_sim [Nelec x Ntime] = Forward_model [Nelec x Nsources] * MN_sources [Nsources x Ntime]. I've generated some generic signals, which you can see in the attached picture. However, I'm struggling to find a way to simulate EEGs using the leadfield matrix.
Thank you for your help in advance.

Did you generate these source signals using Brainstorm's simulator, or did you import them in Brainstorm after generating the time series with your own code ?

I generated these source signals using Brainstorm's simulator. From here.

OK great. I suggest you follow these steps instead, as it looks like you want to generate MEG/EEG data produced by specific cortical regions:

Thank you for your message.
I'm facing an issue as I don't have the EEG or MEG signals you mentioned. I tried generating some generic signals (128*504), but they haven't been effective so far. As I mentioned earlier, I sent a picture of the signals I generated.
Regarding the instruction to "Select the scouts time series in the Process1 tab, then run the process Simulate > Full source maps from scouts", unfortunately, I don't have the scouts time series required for this step.

Make sure you follow each step of the tutorial precisely. For instance, you need a head model to generate the MEG/EEG sensor time series from simulated brain data, as indicated at the top of the link I shared above:


  • Go to functional view of the protocol TutorialIntroduction.
  • Right-click on Subject01 > New folder: "Simulation1".
  • Copy-paste the channel file, the noise covariance and the head model "Overlapping sphere" from the imported folder for the first acquisition run (S01_AEF_20131218_01_600Hz_notch): use CTRL+C/CTRL+V or the popup menus File > Copy/Paste.

Thank you so much for your response.
Could you please tell me where I can find the TutorialIntroduction? I tried looking for it in this link but couldn't locate it.
I appreciate it.

It's the name of the study (aka protocol) created in the first steps of the Brainstorm tutorial:

But you can also use any of your own protocols, provided that the information needed to simulate MEG/EEG data are there.

Thank you for your response.

I'm using my own Protocol, which comes from a Freesurfer folder and doesn't include any EEG data, as you're aware. Therefore, I don't have a folder named S01_AEF_20131218_01_600Hz_notch in the data file of my imported folder.

To proceed, could you please assist me with copying the channel file, noise covariance, and the head model "Overlapping sphere" from the imported folder for the first acquisition run (S01_AEF_20131218_01_600Hz_notch)? You can do this by using CTRL+C/CTRL+V or through the popup menus File > Copy/Paste.

Should I copy this folder from the sample_introduction protocol of brainstorm to my own protocol?
Thank you so much again in advance.

As you may have seen the Simulation tutorial is not an standalone tutorial, it is based on the results obtained once you follow the Introduction tutorial. If you want to follow it you need first to follow the introduction tutorial.

No you should not copy:

  1. It a complete different modality, (MEG was used in the Introduction tutorial and you are looking to simulate EEG), thus the head model is not useful.

  2. There is no need of noise covariance matrix. The only thing that is needed is:

    1. An anatomy (default anatomy works)
    2. A channel file indicating the positions of the electrodes

Check this post on how to create a subject using a predefined EEG cap.
How to upload electrode locations for computing the head model - #2 by Raymundo.Cassani

Once you have the Channel file and the Head model, you can proceed as in:

Thank you for your help.

I've successfully simulated signals as per your instructions, as shown in the attached file.

My next query is: Can I simulate a single scout(more than one dipole) instead of a single dipole?

And another question: Can I use my actual EEG signals instead of generic ones?

For instance, I have a matrix of EEG data for each participant, with dimensions 128 x 504. Is it feasible to import this EEG dataset from MATLAB to Brainstorm for simulation? If so, how can I do it?

Thank you once again.

This is well described in the same tutorial page:
You would need to create a Scout to generate the full source map, and from this you can simulate sensor data (either EEG or MEG)

What do you aim to simulate with the participant data?

In simulations with dipoles and scouts, the idea is to assign currents as if they were caused brain activity, and with this activity and the head model it is possible to simulate sensor data (EEG or MEG).