What is SOLCO ?

The SOurce Localization Collections (SOLCO) supports for several source localization methods used in the literature with file and function formats compatible with VBMEG. This toolbox is useful for comparison of current source imaging.


The SOurce Localization Collections (SOLCO) supports the following source localization methods,

  1. L2-minimum norm
  2. L2-minimum norm with noise-normalization (dSPM proposed by Dale et al. 2000)
  3. L2-minimum norm with resolution-kernel normalization (sLORETA, Pascual-Marqui 2002)
  4. Spatial smoothness constraint using surface Laplacian (LORETA, Pascual-Marqui 1999)
  5. LCMV beamformer and its noise-normalized solution (SAM)
  6. L1-minimum norm

The regularization parameter required for L2-MN, LORETA and sLORETA is automatically determined by either maximizing type-II likelihood or generalized cross-validation (GCV) criteria. There is no automatic way to determine the regularization parameter for L1-minimum norm solution, thus manual parameter search is required. For L1 minimum-norm solution, we use dual augmented langrangian (DAL) toolbox developed by Dr.Tomioka (

Its use is limited to the following case so far;

  • single time window,
  • single leadfield matrix
  • single orientation (normal to cortical surface) for each vertex



To run SOLCO, you need to make path to VBMEG functions and external functions included in the SOLCO folder.

addpath($VBMEGdir); vbmeg;


Short tutorial

1 Run source localization

For example, to run L2-MN algorithm, first set the required parameters

parm = set_wmn_parm('brainfile', 'hoge.brain.mat', 'basisfile', 'hoge.basis.mat', 'megfile', 'hoge.meg.mat', 'currfile','mn.curr.mat', 'twin_meg', [ 501 750 ], 'twin_noise', [ 1 500 ]);

and then run the source localization method.


The resulting current distribution will be saved in parm.currfile. The other source localization methods are run in the same way. Some modification for parameter setting is required depending on methods. Please see help comments of each function for more details.

2 Check estimated currents

To check the estimated current, load the resulting currfile,

MN = load('mn.curr.mat')

and plot timeseries like


or plot current maps averaged over the analysis time window


It should be noted that Jact is the current density. To see normalized currents such as dSPM solution and sLORETA solution, you need to normalize the current density by its noise variance or resolution kernel. In the following twp lines, you can obtain dSPM solution and sLORETA solution, which are normalized with noise variance and resolution kernel, respectively.

Zdspm = MN.Jact ./ sqrt(repmat(MN.Varact, [1, size(MN.Jact,2)]));

Zsloreta = MN.Jact ./ sqrt(repmat(MN.Resact, [1, size(MN.Jact,2)]));


Two test functions, test_main.m and test_check_currents.m demonstrate the steps mentioned in 'How to use' using various source localization methods. To run these test functions, you need test datasets. Download the test data and put it to the toolbox folder. It will take several minutes to run these test functions.

Detailed information

Source localization theory

  • job_wmn solves min_J ||B-GJ||^2+\lambda||J||^2 with optimized lambda. Since grid search is used for optimizing lambda, lambda is robustly estimated. If the obtained solution is normalized with covariance computed from noise period, the resulting solution is the dynamic SPM. If the solution is normalized with its resolution matrix R, the resulting solution is sLORETA.
  • job_loreta solves min_J ||B-GJ||^2+\lambda||LJ||^2 where L is surface Laplacian.
  • job_lcmv computes the inverse filter for position r as w(r) = inv(C)*g(r)/(g(r)'*inv(C)*g(r)) where C is covariance matrix in time of interest and g(r) is the lead field corresponding to position r. My simulation results suggest that LCMV does not provide accurate localization without noise normalization.


A currfile contains following variables,

  • Jact : current timeseries (Nv * Nt where Nv and Nt is the number of vertices and time points).
  • Varact : variance of currents(Nv*1). this is used to compute noise-normalized solutions.
  • MEGinfo : MEG information struct
  • Model : Model struct. Estimated model parameters necessary for computing inverse filter are contained.
  • *_parm : parameter struct.

Evaluation Results


Unlike VBMEG, proj_root is not used in SOLCO. Current file is not exactly compatible with VBMEG. vb_load_current.m does not work.


  • MATLAB12a or later
  • VBMEG1.0 or later


  • Baillet, S., Mosher, J., & Leahy, R. M. (2001). Electromagnetic brain mapping. IEEE Signal Processing Magazine, 18(6), 14–30. LCMV beamformer
  • Standardized low-resolution brain electromagnetic tomography (sLORETA): technical details. Pascual-Marqui RD, Methods Find Exp Clin Pharmacol 2002-v24 Suppl D-pp5-12 sLORETA
  • Dynamic statistical parametric mapping: combining fMRI and MEG for high-resolution imaging of cortical activity. Dale AM, Liu AK, Fischl BR, Buckner RL, Belliveau JW, Lewine JD, Halgren E, Neuron 2000-v26-pp55-67 dynamic SPM
  • Review of Methods for Solving the EEG Inverse Problem, Roberto Domingo Pascual-Marqui, International Journal of Bioelectromagnetism, 1999-v1-pp75-86 LORETA