= What's next =
A roadmap to the future developments of Brainstorm.
== Current topics ==
==== Functionnal connectivity ====
 * Integration of different metrics to study the brain connectivity: <
>Correlation, coherence, Granger causality, phase locking value
 * Development of new ways to represent the connectivity between sensors or brain regions
==== EEG / epilepsy / intra-cranial recordings ====
 * Editing the position of intracranial electrodes in the MRI viewer
==== Source modeling ====
 * Computation of equivalent current dipoles
 * Beamformers
==== Large scale analysis ====
 * Parallel processing: Reduce the computation times using the parallel processing toolbox
 * Distributed processing: Integrate tools for sending Brainstorm processes on computation clusters
<
><
><
>
== Recordings ==
 * RAW file viewer:
  * Pre-load next page of recordings
  * Documentation: Add definition of bad segments
  * 2DLayout: Doesn't work when changing page => need refresh of GlobalData.Preferences.TopoLayoutOptions.TimeWindow
 * EEG reference/storage:
  * Intracranial electrodes: Define and display in the MRI viewer + 3D figures
  * Bad locations: indicate with [NaN NaN NaN] instead of [0 0 0]
  * Bad channels that can be specified at the program level (for sites that have permanently bad channels) => AS Dubarry
 * RAW processing:
  * Make it work for all the file formats (at least bandpass filter + sin removal)
  * Events: advanced process for recombining. Example:  http://www.erpinfo.org/erplab/erplab-documentation/manual/Binlister.html
 * Colormaps:
  * Create a colormap similar to MNE, where extrema are bright
 * Import data:
  * Save properties "baseline" and "resample" at the level of the protocol (to re-use for all the files)
 * NIRS:
  * Add new data type
  * Display of sensors by pairs oxy/deoxy (red/blue), overlaid
 * Images of amplitude: [sensor x time], [trial x time], scout: [trial x time]
  * Can be done with Matrix > View as image: extract cluster, concatenate for all trials
 * 2D Layout for multiple conditions
== Connectivity ==
 * Tutorial coherence [1xN]
 * t-tests on connectivity measures
 * Graph view:
  * Fixed scales for intensity sliders
  * Fix zoom in one region
  * Text bigger
  * Too much data in appdata
 * Other metrics:
  * Coherence by bands: bst_coherence_band_welch.m
  * Granger by bands: bst_granger_band.m
  * Inter-trial coherence
 * Work on progress bars
== Processes ==
 * Time-frequency:
  * Frequency bands: extended syntax (ex: [2 3 4], 10:5:90, ...)
  * How to combine 3 orientations for unconstrained sources
  * Display logs as negative
  * 2D Layout in spectrum
  * Make much faster and more memory efficient (C functions coded by Matti ?)
  * Smooth display of TF/PAC maps (option)
  * TF scouts: should display average of TF maps
 * Bandpass: Show warning when using inappropriate high-pass filter (precision too high)
 * Artifact detection:
  * Detection of bad segments in the RAW files
  * Artifact rejection like SPM: if bad in 20%, bad everywhere
  * Test difference between adjacent samples
 * Distributed processing: Brainstorm that can run without 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)
 * Average:
  * Remember how many trials were used per channel
  * Save standard deviation
  * Display standard deviation as a halo around the time series
 * 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
 * Current Source Density (CSD) => Ghislaine<
>http://psychophysiology.cpmc.columbia.edu/software/CSDtoolbox/index.html
 * Other processes:
  * Detrending
  * 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
== Database ==
 * MEG protocols: More flexible organization of the database; sub-conditions to allow different runs X different conditions.
 * Group matrix files => allow to process matrix files by trial types
 * Add notes in the folders (text files, visible as nodes in the tree)
 * Screen captures: save straight to the database
== Source modeling ==
 * Stenroos 2014 paper: Include the following methods
  * Inner and outer skull surfaces generator from !FieldTrip (needs SPM, probably not so different from BST)
  * Nolte corrected-sphere model (good model re:Alex)
  * Fast BEM models
 * Dipole fitting
 * Visualize Beamformer results:
  * Read CTF SAM .svl
  * Display as layers in the MRI viewer
 * Unconstrained sources:
  * Compute unconstrained and then project on the normal ?
  * Difference and stat should be: norm(A) - norm(B)
  * 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:
  * 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)
 * Magnetic extrapolation: Do the same thing with EEG
 * Noise covariance matrix:
  * 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
 * Simulation: synthesize pseudo data-files from a cortex patch (duration, amplitude, noise)
 * Calculate !ImagingKernel * Gain for a scout
 * EEG Source modeling: Manage references and bipolar montages properly (maybe not necessary)
 * MEG source modeling: Do reconstruction only for a subset of sensors for estimating dipoles?
 * Processes compute head model and sources: Additional option to set the file comment
== Anatomy ==
 * Scouts:
  * Mix constrained/unconstrained/volume sources, using the "Source model" atlas
  * Display edges in the middle of the faces instead of the vertices
  * Project scouts betweens subjects and between hemispheres
  * Display scouts in a tree: hemisphere, region, subregion
  * Downsample to atlas: allow on timefreq/connect files
  * Sort scouts by region in process options
 * Generate mixed density surfaces
 * Import / registration:
  * Major bug when importing surfaces for an MRI that was re-oriented manually
 * Use mid-gray instead of pial surface?
== 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
   * http://www.adscience.fr/uploads/ckfiles/files/html_files/StatEL/statel_wilcoxon.htm
   * http://www.mathworks.fr/fr/help/stats/signrank.html
   * Less powerful than t-tests
  * 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
 * t-test on volume sources
 * Paired t-test on unconstrained sources: (convert to flat + Z-score) => !AnneSo
  * Question of Gaussianity of the samples: take a subset of samples + Kolmogorov-Smirnov / Shapiro-Wilk test
  * http://fr.wikipedia.org/wiki/Test_de_Shapiro-Wilk
  * http://stats.stackexchange.com/questions/362/what-is-the-difference-between-the-shapiro-wilk-test-of-normality-and-the-kolmog
  * http://www.mathworks.fr/fr/help/symbolic/mupad_ug/perform-shapiro-wilk-test.html
  * http://www.mathworks.fr/fr/help/symbolic/mupad_ref/stats-swgoft.html
  * http://stackoverflow.com/questions/14383115/shapiro-wilk-test-in-matlab
 * Create icons for Stat/PAC, Stat/Sprectrum, etc.
 * One sample t-test across subjects
== Input / output ==
 * EEG File formats:
  * EEG !CeeGraph
  * EGI: Finish support for epoched files (formats 3,5,7)
 * !FieldTrip structures: In / Out
 * BCI2000 Input (via EEGLAB plugin)
 * Export TF maps to SPM / volumes
 * EEGLAB import: Selection of conditions in script mode
== Distribution & documentation ==
 * Add Help buttons and menus (in popups, dialog windows...) => Links to the website.
 * Introduction tutorials:
  * Processes: Describe all the processes
  * Clusters
  * First steps: Brainstorm preferences
  * Headmodel: explain the fields + how to get the constrained leadfield
  * Sources: Modelized data
  * Sources: theshold min. size (not documented yet)
  * Import raw recordings: Add "detect bad trials/channels" in the pipeline
  * Temporary folder
== Current bugs ==
 * Import anatomy folder menu crashes on MacOSX 10.8.5 / Matlab 2013b
 * Record tab: Text of epoch number is too big on MacOS
 * Menu "Use default EEG cap" doesn't work for a multiple selection (setting the same EEG cap for several subjects)
 * in_bst_data_multi: If trials have different sizes, output is random (the one of the first file)
 * 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
 * Image viewer has some bugs on some systems
 * Screen capture for reports never works: Find another solution
 * Screen capture when there is a fading effect in the window manager: captures the window
 * Close figure with coherence results should hide the "frequency" slider
 * Problems growing scouts on merged surfaces (Emily)
 * Edit scout in MRI: small modifications cause huge increase of the scout size
== Geeky programming details ==
 * Use Matlab Coder to optimize some processes: Bandpass filter, sinusoid removal
 * Hide Java panels instead of deleting them
 * mri2scs: convert arguments to meters
 * bst_warp and channel_project: Use tess_parametrize_new instead of tess_parametrize
 * Shared kernels: do the "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
 * Line smoothing / anti-aliasing (time series figures)