Brainstorm
  • Comments
  • Menu
    • Attachments
    • Versions
    • Raw Text
    • Print View
  • Login

Software

  • Introduction

  • Gallery

  • Download

  • Installation

Users

  • Tutorials

  • Forum

  • Courses

  • Community

  • Publications

Development

  • What's new

  • What's next

  • About us

  • Contact us

  • Contribute

Revision 198 as of 2016-02-15 22:28:33

What's next

A roadmap to the future developments of Brainstorm.

Contents

  1. Current topics
  2. Recordings
  3. Interface
  4. Connectivity
  5. Processes
  6. Database
  7. Distributed computing
  8. Source modeling
  9. Anatomy
  10. ECOG/SEEG
  11. Statistics
  12. Input / output
  13. Distribution & documentation
  14. Current bugs
  15. Geeky programming details

Current topics

Source modeling

  • Implementation of a new unified minimum norm/beamformer framework (work in progress)

Statistics

  • Implementation of new parametric and non-parametric tests (work in progress)

Documentation

  • Standard workflows for different types of data and experiments (work in progress)

Functional connectivity

  • Significance thresholding of the connectivity matrices (not started)

Computation

  • Removing the dependence to the Java interface to run in headless mode (not started)
  • Interacting directly with distributed computing systems (not started)



Recordings

  • 2D topographies:
    • Nicer topographies with circle around 2DDisc (similar to EEGLAB plots)
    • Standardized plots (using FieldTrip .lay files?)

    • Aligned on the midline at least
    • Contour lines sometimes messed up with Elekta recordings
    • Make the surface on which the values are interpolated simpler
  • MEG/EEG registration: Apply the same transformation to multiple runs
  • Montages:
    • Allow to set the color for each channel separately
    • Allow the superposition of channels (NIRS)
  • 2DLayout:
    • Use the same standard positions, too much space between sensors (Recordings + TF)
    • Overlay multiple conditions
    • RAW files: Doesn't work when changing page => need refresh of GlobalData.Preferences.TopoLayoutOptions.TimeWindow

    • Same shortcuts as the raw file viewer (right-click + move for gain)
    • Add support for montages
  • RAW file viewer:
    • Show easily the maximum value at the current time point
    • Pre-load next page of recordings
    • Events: Change the category of a selected event easily, instead of deleting/marking new
    • Events: advanced process for recombining.
    • Example: http://www.erpinfo.org/erplab/erplab-documentation/manual/Binlister.html

  • Filtering:
    • Use short FIR filters instead of IIR for bandpass, to limit the ringing (bad for Hilbert as well)
    • Or allow the users to edit the LowStop parameter in bst_bandpass

  • Bad channels specified at the program level (for sites that have permanent bad channels: AS)

Interface

  • Start Brainstorm without Java (-nodesktop)
  • Generalize the user of the units (field .Units): Rewrite processes to save the units correctly
  • Colormaps:
    • Allow brightness/contrast manipulations on the custom colormaps
    • Create a colormap similar to MNE, where extrema are bright
    • Global colormap max: Should get the maximum across all the open files
  • Open new figures as tab (docked in the Figures window)
  • Copy figures to clipboard (with the screencapture function)
  • Removing all the CTRL and SHIFT in the keyboard shortcuts
  • Display warning before opening files that are too big
  • Smooth display from figure_image (ERPimage, raster plot...)

Connectivity

  • Thresholding the connectivity matrices
  • Stat tests on connectivity measures
  • Check why our Hilbert implementation has huge edge effects
  • Connectivity on unconstrained sources: how to group the three orientations?
  • Connectivity based on band limited power (Sylvain):
    • Compute Hilbert/Bandpass + correlation of the envelopes
    • Bandpass envelopes before computing correlations?
    • Compute Hilbert(sensors) and then project to source space?
  • Multi-tapers?
  • Graph view:
    • Does not display negative values correctly (correlation or difference of coherence)
    • Re-write using pure Matlab code and smoothed graphics
    • Fixed scales for intensity sliders
    • Text bigger
    • Too much data in appdata
    • Fixed scales for intensity sliders
    • Add "=" shortcut for having graphs with similar configurations
    • Disable zoom in one region (serious bugs)
    • NxN on sensors: does not place the sensors correctly in space
  • Coherence:
    • Average cross-spectra instead of concatenating epochs (to avoid discontinuities)
  • Granger:
    • Crashes sometimes: improve stability
    • Re-write and optimize code
    • Add progress bar
  • PLV:
    • Add p-values
    • Remove evoked
    • Optimize code
    • Add time integration
    • Unconstrained sources
  • PAC:
    • Add input TF , to disconnect TF decomposition and PAC computation (Peter)
    • Refine frequency vector of low frequencies
    • How many central frequencies to use in bst_pac?
    • Change filters: no chirplet functions
    • bst_freqfilter: Use nfcomponents like in bst_pac
    • Esther recommended a larger frequency binning of the PAC estimation
    • PAC maps: Display all sensors at once (like TF and DynamicPAC)
  • Time-resolved correlation/coherence: Display as time bands
  • Other metrics:
    • Coherence by bands: bst_coherence_band_welch.m
    • Granger by bands: bst_granger_band.m
    • Inter-trial coherence
  • Tutorial coherence [1xN] : Reproduce FieldTrip results?

  • Connect NxN: Display as time series > Display warning before trying to open too many signals

Processes

  • Optimize pipeline editor speed: Opening the window and the showing menu "Add process" are slow
  • ICA:
    • Exploration: Add window with spectral decomposition (useful for muscle artifacts)
    • Comparison JADE/Infomax:
      http://journals.plos.org/plosone/article?id=10.1371/journal.pone.0030135

    • Add methods: SOBI, Fastica, AMICA/CUDICA (recommended by S Makeig)
    • Dimension reduction with PCA adds artifacts: Not done by default in EEGLAB
      Contact: Stephen Shall Jones ( shall-jones@infoscience.otago.ac.nz )
      Student Carl Leichter detailed this in his thesis

    • S Makeig: Use ICA to select the IC of interest instead of only removing artifacts
    • Display of spectrum for components (PSD/FFT)
    • Use FastICA (algo crashing)
    • Understand why EEG/Epilepsy tutorial data crashes if we don't limit the number of components
    • Add components preselection: Correlation with EOG/ECG
    • Import ICA matrices available in EEGLAB .set files
  • Use Matlab Coder to optimize some processes: Wavelets, bandpass filter, sinusoid removal
  • Allow processes in Python and Java
  • SSP:
    • Display warning if changing the ChannelFlag while there is a Projector applied

    • Show where the attenuation is projected:
      (sum(IK,2)-sum(SSP(k,:)*IK,2)./sum(IK,2)

  • Bandpass:
    • Offer option: bst_bandpass_fft / bst_bandpass_filter
    • Rewrite without the forced low-pass filter at Fs/3
    • Show warning when using inappropriate high-pass filter (precision too high)
    • Use FIR filter
  • Spectral flattening (John):
    • ARIMA(5,0,1): Apply on the signal before any frequency/connectivity/PAC analysis
  • PSD:
    • Rewrite to have the same input as coherence (frequency resolution instead of window length)
    • Allow running on source files attached to continuous files (needs a lot of rewriting)
  • Remove line noise: http://www.nitrc.org/projects/cleanline

  • Band-limited power envelope
  • Reports:
    • Save as HTML / PDF
  • Pipeline editor:
    • Add loops over subjects/conditions/trial groups
  • Time-frequency:
    • Induced calculation: Avg(Power(TF(trials - Avg(Trials)))):
      Add option "Remove evoked response from each trial"

    • Standardize using: diff before calculation + cumsum (checkbox "flatten data")
    • Frequency bands: extended syntax (ex: [2 3 4], 10:5:90, ...)
    • Display logs as negative
    • Difference of power displayed in log: problems (Soheila)
    • 2D Layout in spectrum
    • Make much faster and more memory efficient (C functions coded by Matti ?)
    • TF scouts: should display average of TF maps
    • Impossible to keep complex values for unconstrained sources
    • Pad short epochs with zero values for getting lower frequencies
    • Hilbert with time bands very slow on very long files (eg. 3600s at 1000Hz) because the time vector is still full (10^7 values): save compressed time vector instead.
    • 3D figures: Colormaps with "log" option doesn't work
    • Extend clusters tab to display of TF to overlay TF signals (Svet)
    • TF on scouts: Add progress bar when extracting all the scouts time series (can be long)
  • Artifact detection:
    • Artifact rejection like SPM: if bad in 20%, bad everywhere
    • Test difference between adjacent samples
    • Allow the detection on differences of signals (bipolar montages)
  • Co-registration of MEG runs:
    • SSP: Group projectors coming from different files
    • Finish validation of the method
    • Apply to continuous recordings for correcting head movements
  • Resample continuous files
  • Other processes:
    • Moving average
    • Max
    • Median
    • Significance test (Dimitrios, Leo)
    • Spatial smoothing: check / document parameters
  • Contact sheets & movies: use average of time windows instead of single instants, for each picture.

  • Optical flow
  • Simulation:
    • Fix units in simulation processes => no *1e-9 in "simulate recordings"

    • Use "add noise" process from Hui-Ling (in Work/Dev/Divers)
  • Use field process field "Group" to separate Input/Processing/Output options
  • Use new Matlab functions: movmean, movsum, movmedian, movmax, movmin, movvar, movstd

Database

  • Sort files by comment
  • MEG protocols: More flexible organization of the database; sub-conditions to allow different runs X different conditions.
  • Matrix files: Allow to be dependent from other files
  • Add notes in the folders (text files, visible as nodes in the tree)
  • Screen captures: save straight to the database
  • Rename multiple files
  • Default headmodel lost when reloaded: Keep selection on the hard drive (in brainstormstudy.mat)

Distributed computing

  • Options from FieldTrip:

    • Loose collection of computers: https://github.com/fieldtrip/fieldtrip/tree/master/peer

    • Alternative, with less limitations: http://research.cs.wisc.edu/htcondor/

    • Single multicore machine: https://github.com/fieldtrip/fieldtrip/tree/master/engine

    • Batch system: https://github.com/fieldtrip/fieldtrip/tree/master/qsub

    • Documentation: http://fieldtrip.fcdonders.nl/faq#distributed_computing_with_fieldtrip_and_matlab

  • PSOM: http://psom.simexp-lab.org/

Source modeling

  • Mixed head models:
    • Project to templates (scouts or source maps)
    • Create scout form maximum doesn't work (menu Sources > Max value)

    • Display in MRI doesn't work
    • Smooth display: do not smooth subcortical structures
    • Export as .nii volume: doesn't work
  • Dipoles:
    • panel_dipoles: Doesn't work with multiple figures
    • Read easily dipole coordinates: Click on one selects it and open the panel Get coordinates
  • Panel Get coordinates: Add button "find maximum"
  • Stenroos 2014 paper: Include the following methods
    • Inner and outer skull surfaces generator from FieldTrip (needs SPM)

    • Nolte corrected-sphere model (good model re:Alex)
    • Fast BEM models
  • Visualize Beamformer results:
    • Read CTF SAM .svl
    • Display as layers in the MRI viewer
  • Unconstrained sources:
    • Stat and connectivity: what to do? (re-send email John+Sylvain)
  • Overlapping spheres: improve the estimation of the spheres for the frontal lobes
  • Volume grid:
    • Test volume sources with all the subsequent processes (timefreq, stat...)
    • Optimize: 3D display (better than 9x9 cubes)
    • Optimize: vol_dilate (with 26 neighbors)
  • Magnetic extrapolation: Do the same thing with EEG
  • Noise covariance matrix:
    • Display with figure_image()
    • Storage of multiple noise covariance matrices (just like the head models)
    • Always save as full, then at inversion time, we can decide between full, heteroskedastic (diagonal) or homoskedastic (i.i.d, scalar)
    • Problem of having inividual trials + averages in the condition => Display warning or not?

    • Save nAvg in noisecov file, to make it easier to scale to other recordings
    • When deploying to other conditions: Apply destination SSP (NoiseCov = SSP.NoiseCov.SSP' )

  • Sources on surface: Display peak regions over time (time = color) => A.Gramfort

  • Calculate ImagingKernel * Gain for a scout

  • Beamformers from FieldTrip (LCMV, SAM)

  • Time-frequency beamformers:
    • Band-pass everything in different frequency bands + Source estimation + TF
    • Ask data to Sarang where he sees effects that cannot be extracted with MN followed by TF
  • Process "Extract scouts time series": Add PCA option (replace isnorm with choice PCA/Norm)
  • BEM: Fix unstable results when one vertex is too close from the layers (5mm ?)
  • Hui-Ling beamformers:
    • More explanations about what is in NAI and Spatial filters
    • Explain that is this is better to study effects extended in time (Ntime > Nsensors)

    • Group LCMV+MCB
    • Condition LEFT median nerve: very bad results
  • Menu Sources > Simulate recordings:

    • Do not close the 3D figures after generating a new file
    • Add a process equivalent to this menu

Anatomy

  • MNI coordinates: Extend to non FreeSurfer volumes (BrainSuite volumes that are not 256x256x256)

  • Project all sub-cortical structures to default anatomy (check code from Denis S)
  • Add cerebellum to default model generated with "Import FS anatomy"
  • Import MRIs with different resolutions: re-interpolate automatically
  • Edit fiducials: Replace 6 text boxes with 1 for easy copy-paste (see fiducials.m)
  • Warping: Scale option has to be fixed, it is currently very unstable
  • Scouts:
    • Display edges in the middle of the faces instead of the vertices
    • Display scouts in a tree: hemisphere, region, subregion
    • Downsample to atlas: allow on timefreq/connect files
    • Sort scouts by region in process options
  • Menu head model > Copy to other conditions/subjects (check if applicable first)

  • Generate mixed density surfaces
  • Optimize computation interpolation MRI-surface (tess_tri_interp)
  • Render surface envelope in the MRI as a thin line instead of the full interpolation matrix
  • Major bug when importing surfaces for an MRI that was re-oriented manually
  • Smooth surface: Fix little spikes due to irregularities in the mesh
  • Add eyes models to attract eye activity

ECOG/SEEG

  • Co-register MRI and CT for electrodes marking in the MRI Viewer
  • Import/export electrodes positions in MNI/SCS/MRI coordinates
  • Display SEEG+ECOG contacts at the same time
  • Problem of difference between RAS and TkRegRAS: http://neuroimage.usc.edu/forums/showthread.php?1958-SEEG-electrodes-and-subject-s-anatomy-are-not-alligned

Statistics

  • ANOVA: Use LENA functions(?)
    • Output = 1 file per effect, all grouped in a node "ANOVA"
    • Display several ANOVA maps (from several files) on one single figure, using a "graphic accumulator", towards which one can send any type of graphic object
  • Problem t-test on unconstrained sources: (convert to flat + Z-score)
  • FieldTrip implementation:

    • Add logic of bad channels individually per sensor instead of removing completely all the channels that are marked as bad in at least one trial
  • Use SurfStat: Impements interesting things, like an analytical cluster-based p-value correction (Random-field theory which is used in SPM) - Peter

  • PLS: Partial Least Squares
  • In Stat tab: Correction by temporal extension (display only if effect longer than a given input in ms)

Input / output

  • FieldTrip integration:

    • Import/Export continuous recordings and non-averaged trials.
    • Export trials with a trial definition: http://neuroimage.usc.edu/forums/showthread.php?2213

  • EEG File formats:
    • EEG CeeGraph

    • EGI: Finish support for epoched files (formats 3,5,7)
  • BCI2000 Input (via EEGLAB plugin)
  • EEGLAB import:
    • Support for binary AND epoched files (now it's one or the other)
    • Allow epoched files with recordings saved in external files (now external files implies continuous recordings)
  • BST-BIN: Add compression
  • Review raw on all the file formats (ASCII EEG and Cartool missing)
  • gTec EEG recordings: Read directly from the HDF5 files instead of the Matlab exports.
  • Use new Matlab functions readtable/writetable (2006b): for Excel and text files

Distribution & documentation

  • Reference tutorials on Google scholar + ResearchGate

  • Cleaning threads on the forum
  • Add Help buttons and menus (in popups, dialog windows...) => Links to the website.

  • Finish existing tutorials:
    • EEG/Epilepsy: Rewrite scripts + update contents (with Geneva2015 walkthrough)
    • Dipoles
    • Group MEM/Epilepsy + Epilepsy tutorials
  • New tutorials:
    • MEG connectome
    • Scrambled faces (SPM/MNE-Python)
    • Coherence (cortico-muscular ?)
    • Intra-cranial recordings
    • Co-register MEG runs (Beth)
  • Missing in the introduction tutorials:
    • Volume scouts
    • Sources: Model evaluation (by simulating recordings)
    • Time-frequency: Description of "log freq scale" option
    • Modify a structure manually: Export to Matlab/Import from Matlab
    • File manipulation: file_short, file_fullpath, in_bst_*...
    • Description of all fields in MRI and surfaces
  • Script tutorials: ask what folder contains the tutorial datasets
  • Missing in tutorial "Export to SPM": Add section "Compare with Brainstorm"
  • Missing in page "Cite Brainstorm": Add all the methods used in the software

Current bugs

  • Screen capture:
    • Bug on Win8/Win10: doesn't capture the correct part of the screen
    • Window managers with fading effect: captures the top window
  • Image viewer:
    • Difficult to get to 100%
    • Buggy on some systems
  • 2DLayout:
    • (TF) Images are too far apart with EEG 20 channels
    • (time series) Sometimes the lines are not visible
    • (time series) Does not work when DC offset is not removed
  • Progress bar:
    • Doesn't close properly on some Linux systems
    • Focus requests change workspace when processing constantly (Linux systems)
  • MacOS bugs:
    • Buttons {Yes,No,Cancel} listed backwards
    • Record tab: Text of epoch number is too big
    • Colormap menus: Do not work well on compiled MacOSX 10.9.5 and 10.10
  • Matlab bugs:
    • Interface looks small on screens with very high resolutions: Reduce the resolution
    • Out of memory errors on Win 32bits (restart Matlab)
    • Matlab 2014b bug with rmdir/movefile: Enter but never returns from the call
  • Event markers are not visible anymore with the sequence: Open MEG, open EOG, close MEG
  • in_bst_data_multi: If trials have different sizes, output is random (the one of the first file)
  • Edit scout in MRI: small modifications cause huge increase of the scout size
  • Canolty maps computation: Fix progress bar
  • Change of default anatomy does not reset the interpolation matrices in all the subjects.
    • After projecting sources once from subject to default anat, the interpolation is saved and not updated. Interpolations need to be removed manually before projecting again on a new template.

Geeky programming details

  • Hide Java panels instead of deleting them
  • Interpolations: Use scatteredInterpolant, griddedInterpolant, triangulation.nearestNeighbor (2014b)
  • bst_warp and channel_project: Use tess_parametrize_new instead of tess_parametrize
  • Shared kernels: "get bad channels" operation in a different way (reading all the files is too slow)
  • Optimize bst_get:
    • Now study and subject have necessarily the same folder name
    • Replace big switch with separate functions
  • Progress bar:
    • Add different levels (to handle sub-processes)
    • Make work correctly with RAW on resting tutorial
    • Uniformize calls in bst_process/Run
    • Add a "Cancel" button
  • Fix all the 'todo' blocks in the code
  • Replace handle "0" with bst_get('groot')
  • At the end of bst_startup in compiled mode, replace loop with waitfor(jFrame)
  • Error message: Add a link to report directly the bug on the forum
  • Optimize MRI viewer with patch() instead of image()
  • MoinMoin Powered
  • Python Powered
  • GPL licensed
  • Valid HTML 4.01