= What's next =
A roadmap for the future developments of Brainstorm.
== Next six months ==
==== Pre-processing ====
* Extend processing of continuous CTF files to all file formats
* Continuous viewer: Many small improvements to the usability of its interface
* Improve detection and correction of artifacts with SSP
* Co-registration of several MEG runs on one single head position
* Make all the main operations available in the pipeline editor
==== File formats ====
* MRI: MINC
* EEG: Stellate
* EEG: Brain Products / BrainAmp
* Read and display NIRS recordings
* CTF SAM Beamformer results
==== Functionnal connectivity ====
* Implementation of methods developed at USC
<
><
>
== Details of those features ==
* SSP:
* Make SSP projections dynamic, and keep the full list instead of always them combining them
* Take the bad channels in account in the application of the SSP
* Refresh display after changing the list of bad channels (imported files + raw) so the SSP are applied correctly
* When processing multiple files: waitbar is all messed up
* Tune parameters for the automatic detection of heartbeats and eye blinks
* Write documentation
* RAW file viewer:
* Buttons for changing scales (time + amplitude)
* Add tooltips to all the buttons / shortcuts
* Adding events using configurable shortcuts (CTRL+number)
* If "Use SSP " option is selected, automatically select "Remove baseline" and "CTF compensations"
* Documentation: Add definition of bad segments
* RAW processing:
* Process correctly CTF files saved without the 3rd order grad correction (apply correction before)
* Allow to overwrite RAW files (but with a HUGE warning)
* Update file definition + events if time changes (ex: resample)
* Make it work for the file formats
* Homogenize a selection of several subjects/conditions
* Popup menu when more than one study selected
* Creation of a common channel file (match channels by names, not by order)
* Register MEG runs (recompute fields for a different set of sensors, MEGCoregister from old brainstorm)
* Complete processing pipeline:
* Import + pre-process
* Sources / head model / noise covariance
* Project sources
* Do not generate errors, stay silent and generate a report log that is shown at the end
* bst_selections:
* Add user defined combinations of sensors (eg. "double banana" for EEG)
* Use this to produce "inversed polarity" displayes too (useful in EEG)
* Standard setups for al the EEG caps
== Other ==
* Stat on scouts / clusters / "matrix"
* Averager: remember how many trials were used per channel
* Command-line Brainstorm: for working on clusters (make sure that there are no interface interruptions)
* MEG protocols: More flexible organization of the database; sub-conditions to allow different runs X different conditions.
* Sources on surface: Display peak regions over time (time = color) => A.Gramfort
* Images of amplitude: [sensor x time], [trial x time], scout: [trial x time] (similaire to erpimage in eeglab)
* Simulation: synthesize pseudo data-files from a cortex patch (duration, amplitude, noise)
== Source modeling ==
* Inverse:
* Stable LCMV Beamformer
* MUSIC
*
* Unconstrained sources:
* Define as default
* Check all the processes
* Difference and stat should be: norm(A) - norm(B)
* Overlapping spheres: improve the estimation of the spheres for the frontal lobes
* Volume grid:
* Scouts 3D
* Test volume sources with all the subsequent processes (timefreq, stat...)
* Optimize: 3D display (better that 9x9 cubes)
* Optimize: vol_dilate (with 26 neighbors)
* Optimize: grid_interp_mri
* Magnetic extrapolation:
* Do the same thing with EEG
* Optimize bst_extrapm.m, add waitbar
* Use the noise covariance from the database instead of recomputing it
* Project sources:
* Adapt smooth factor to the number of vertices
* Number of neighbors to consider = average number of neighbors in the target mesh.
* Compute by small time blocks
* Noise covariance matrix:
* 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' )
== Anatomy ==
* Use BrainVISA / FreeSurfer labeling automatically when importing cortex surfaces
* MRI import: auto-reorientation of MRI after selected NAS / LPA / RPA.
* Major bug when importing surfaces for an MRI that was re-oriented manually
* Finalize Brodmann scouts
* Remove NCS/Talairach coordinate system, or fix it => Sylvain, Karim ND
* Clustering cortex: Dimitrios, David, Yu-Teng
== Processes ==
* Other processes:
* Moving average
* Remove linear trend
* Power line removal
* Bug: gradnorm crashes with bad channels
* Spatial smoothing: check / document parameters
* Sinusoid removal: fix new function
* Time-frequency:
* Write script for timefreq tutorial
* Make much faster and more memory efficient (C functions coded by Matti ?)
* Power spectrum: computation (FFT/welch, or average of TF) + display(f/Power, 2DLayout)
* Display stat computed on time-frequency data
* Display TF maps separately for the two gradiometers (if not: overlap)
* Source reconstruction by frequency bands
* Scouts on surface / time-freq
* Process selection interface:
* Bug when redimensioning window (with more than one process)
* isAvgRef: warning quand process necessite des donnees en AVG REF en entree
* Save "freqband" option when edited from custom processes
* John's noise cancellation filters
* Chain calls of similar processes (ex. bandpass+sin_remove), to avoid reading the full raw files several times
== 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
* Permutation tests:
* t-test only (wilcoxon? sign-test?): paired, equal var, unequal var
* nb permutations ~ 1000
* maximum statistic over "time" or "time and space"
* Permutations / clustering: cf fieldtrip
* http://fieldtrip.fcdonders.nl/tutorial/cluster_permutation_timelock
* http://fieldtrip.fcdonders.nl/tutorial/cluster_permutation_freq
* Threshold in time: keep only the regions that are significative for contiguous blocks of time, or over a certain number of time points<
> => Process that creates a static representation of a temporal window
== Display ==
* OpenGL options: {none, software, hardware}
* Colormap: Set colormap max with right-click + move on the colorbar
* Bug: Mixing 2 views MRI/3d, white cuts appear after !SetCurrentFigure
* Bug: Scout without overlay, adapt scale for each graph when "Uniformize" option is unchecked (mixing sources + zscores)
* Waitbars:
* Replace old waitbars with java ones
* Add a "Cancel" button on waitbars when the bounds are defined (ie. when bst controls the process)
* Contact sheets & movies: use average of time windows instead of single instants, for each picture.
== I/O ==
* EEG File formats:
* Nihon Kohden
* EDF+
* !BrainVision / !BrainAmp: Get functions from EEGLAB
* EEG !CeeGraph
* NEUROFILE = COHERENCE EEG/video !LongTerm Monitoring => Manfred Spueler
* EGI: Finish support for epoched files (formats 3,5,7)
* Other file formats
* MEG160 (KIT)
* CTF:
* Read continuous RAW files split in several .meg4 files ( > 2 Go)
* Read STIM channel and generate !MarkerFile
* EEGLAB: Apply ICA matrices, get number of trials for AVG files
* !FieldTrip structures: In / Out
* Gzipped Nifti (new BrainVISA standard)
* Analyze / Nifti:<
>
* Fix output function (output MRIs cannot be imported in SPM)
* Use correctly field "orient" to align automatically MRI when importing
* Define scouts from SPM / Analyze 3D masks
* Files > 2Gb: display warnings
== Programming details ==
* Double-click doesn't work well on some Linux workstations
* Bug: Menu "Use default EEG cap" doesn't work for a multiple selection (setting the same EEG cap for several subjects)
* Bug node selection: click on sources > TF: select node-source, not node-condition
* Bug tree_dependencies: sources files, reprojected on default anatomy; If based on data files that are bad trials, they should be ignored by tree_dependencies, and they are not
* bst_warp and channel_project: Use tess_parametrize_new instead of tess_parametrize
* Testing functions: test_ctf "folder" / test_neuromag "folder" / test "folder" => Alex
* Bug in_bst_data_multi: If trials have different sizes, output is random (the one of the first file)...
* sLORETA: Values are now multiplied by 1e12 at loading for display => has do to be done in another way
* Shared kernels: do the "get bad channels" operation in a different way (reading all the files is too slow)
* Write shepards.m with new algorithm for nearest neighbors
* Use Matlab Coder to compile / optimize some processes
== Distribution & documentation ==
* Version with big fonts for live demos
* Add Help buttons and menus (in popups, dialog windows...) => Links to the website.
* List of all the shortcuts
* Send email to registered users to anounce major improvements
* Script tutorials:
* Update them to reflect all the recent changes
* Script for the time-frequency computation
* Introduction tutorials:
* Estimate time to complete each tutorial
* Clusters
* Anatomy: Segmentation with !FreeSurfer
* First steps: Brainstorm preferences
* Headmodel: explain the fields + how to get the constrained leadfield
* Coordinate sytems: How to convert between the different coordinates systems in scripts
* Sources: Modelized data
* Sources: theshold min. size (not documented yet)
* Scouts: Atlases of Tzourio-Mazoyer and Brodman
* Processes: Describe all the processes
* Processes: How to write your own processes (user folder for processes)
* Processes: Processing RAW files
* Import raw recordings: Add "detect bad trials/channels" in the pipeline
* Advanced tutorials:
* MNE sample dataset
* EEG (How to import an EEG cap)
* MRI segmentation with !FreeSurfer => David Wheland
* How to make and compress a movie (Brainstorm + !VirtualDub + XVid)
* Display the "What's new" page after downloading new version of brainstorm
* Ask users to send their channel files, align on Colin, distribute