How to implement surface Laplacian, aka scalp current density (SCD)?

Hi,

I have sensor-level EEG data that I wish to spatially constrain using the surface Laplacian method. The protocol involves extracting TF estimates from the data and then computing a cluster permutation test against zero in 3 dimensions to localize frequencies, timepoints, and electrodes of interest. The method works well, and I get one big significant cluster across alpha and beta that I can visually see is close to being separable into two clusters. This would be advantageous because I am specifically interested in the effect in alpha.

Here's where the idea of constraining the spatial dimension using the surface Laplacian came in.

However, I am only cabable of using Apply Montage >> "Scalp current density" to the epochs, prior to TF decomposition. This works fine, but I'm not sure I trust the results of the cluster permutation test I get further downstream. I would ideally like to apply the FieldTrip function on the data myself so that I can tweak the parameters and compare. Yet, whenever I try to use the FieldTrip function on the same epochs (see image), it spits that the function only takes raw data as input. But then if I feed the raw continuous data to the Process1 box I can't even select the FT function in the GUI, so I'm in a bind.

Is there workaround? If not, can you tell me what the parameters of the Scalp current density montage are, or where I can find them?

FYI I'm using the latest version of Brainstorm (June 25th 2025).

Hi @OscarBedford, the process to compute SCD in Brainstorm using FieldTrip is now updated.

  1. It now works without troubles on imported data. Commit 9bf33a4, and,
  2. It works also on raw data. Commit ff4da7e

There parameters are in the function panel_montage.m:
brainstorm3/toolbox/gui/panel_montage.m at 44db403c8ba4ac111942f40792d81119246c476a · brainstorm-tools/brainstorm3 · GitHub

These lines could be found by searching the source code for the text 'Scalp current density' which is the text that appears in the montage selector. Find more info on finding Brainstorm functions in here:

https://neuroimage.usc.edu/brainstorm/Tutorials/Scripting#Find_examples_in_the_code

Lastly, as you can see the SCD montage is computed with lapcal() as in the Finite-difference method for ft_scalpcurrentdensity.m
fieldtrip/ft_scalpcurrentdensity.m at f9009e0d718c79da603e6917e173fdd3ed873d49 · fieldtrip/fieldtrip · GitHub

PS. Apologies for the delayed response, we just realized we had missed your message.

1 Like

Thanks so much!!