= What's next =
A roadmap to the future developments of Brainstorm.
== Current topics ==
==== Functionnal connectivity ====
 * Significance thresholding of the connectivity matrices
==== Documentation ====
 * Merging the 12+3 introduction tutorials to illustrate better the latest developments
==== EEG / epilepsy / intra-cranial recordings ====
 * Editing the position of intracranial electrodes in the MRI viewer
==== Source modeling ====
 * Implementation of a new unified minimum norm/beamformer framework
<
><
><
>
== 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 in the MRI viewer
  * 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
 * 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
 * Filtering: Use short FIR filters instead of IIR for bandpass, to limit the ringing<
>Or allow the users to edit the !LowStop parameter in bst_bandpass.
 * Nicer 2D topographies, standardized
 * Copy figures to clipboard (with the screencapture function)
== Connectivity ==
 * Tutorial coherence [1xN]
 * Thresholding the connectivity matrices
 * 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 ==
 * Use Matlab Coder to optimize some processes: Wavelets, bandpass filter, sinusoid removal
 * 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 ?)
  * 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 (Beth)
  * 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:<
>
  * 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)
== 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
 * Rename multiple files
== 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 ==
 * Finish dipole scanning (allow the tab to control multiple figures separately)
 * Dipole fitting
 * 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
 * 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:
  * 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
 * 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 ==
 * 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
  * 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 ==
 * Finish MINC/CIVET integration (finir lecture MINC2: P Bellec)
  * Send email to CIVET mailing list when done
 * !FieldTrip structures: In / Out (see fieldtrip/utilities/ft_datatype_*)
 * EEG File formats:
  * EEG !CeeGraph
  * EGI: Finish support for epoched files (formats 3,5,7)
 * BCI2000 Input (via EEGLAB plugin)
 * EEGLAB import:
  * Selection of conditions in script mode
  * 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)
== Distribution & documentation ==
 * Cleaning threads on the forum
 * Make the automatic update work when behind a proxy
 * Add Help buttons and menus (in popups, dialog windows...) => Links to the website.
 * Publication list: Fold by years
 * Finish existing tutorials:
  * Dipoles
  * FieldTrip/Auditory: Extend to MNE/EEGLAB/SPM
 * New tutorials:
  * MEG connectome
  * Describe all the processes
  * Statistics
  * Coherence (cortico-muscular ?)
  * Intra-cranial recordings (Average ref by groups using Comment field)
  * Co-register MEG runs (Beth)
 * Missing in the introduction tutorials:
  * Volume scouts
  * First steps: Brainstorm preferences
  * First steps: Temporary folder
  * Exploration: Clusters
  * Headmodel: explain the fields + how to get the constrained leadfield
  * Sources: Model evaluation (by simulating recordings)
  * Sources: Theshold min. size (not documented yet)
  * Time-frequency: Description of "log freq scale" option
 * Missing in tutorial "Export to SPM": Add section "Compare with Brainstorm"
 * Missing in page "Cite Brainstorm": Add all the methods used in the software
 * Rewrite basic 12+3 tutorials: group in one series
== Current bugs ==
 * Black buttons in the MRI Viewer (MacOS)
 * Workshops:
  * Create scouts doesn't work: scout created on the other side of the brain
  * Import anatomy folder: Out of memory sometimes (restart Matlab)
 * Record tab: Text of epoch number is too big on MacOS
 * 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 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 ==
 * Hide Java panels instead of deleting them
 * mri2scs: convert arguments to meters
 * Interpolations: Use scatteredInterpolant, griddedInterpolant, triangulation.nearestNeighbor (Matlab 2014b)
 * 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)
 * 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