| 
  
   Size: 11265 
  
  Comment:  
 | 
  
   Size: 10854 
  
  Comment:  
 | 
| Deletions are marked like this. | Additions are marked like this. | 
| Line 2: | Line 2: | 
| A roadmap for the future developments of Brainstorm. | A roadmap to the future developments of Brainstorm. | 
| Line 5: | Line 5: | 
| ==== Data acquisition ==== * Improve the acquisition of the head points and the registration MEG / MRI * Real-time processing and display (based on !FieldTrip realtime module) * Support for optical recordings: Near-infrared spectroscopy (NIRS) * Support for intra-cranial recordings  | 
|
| Line 6: | Line 12: | 
|  * 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 ==== * MINC MRI * Stellate EEG * Brain Products / BrainAmp EEG * Read and display NIRS recordings * SAM Beamformer results  | 
 * Correction for head movements (using the continuous head localization coils) ==== Source modeling ==== * Computation of equivalent current dipoles * Display results of CTF SAM beamformer  | 
| Line 20: | Line 19: | 
|  * Implementation of methods developed at USC <<BR>><<BR>> == 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 * Write documentation  | 
 * Integration of different metrics to study the brain connectivity: <<BR>>Correlation, coherence, Granger causality, phase locking value * Development of new ways to represent the connectivity between sensors or brain regions ==== Data management ==== * Filter the display of the tree by type / name / tag ==== 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 <<BR>><<BR>><<BR>> == Recordings ==  | 
| Line 31: | Line 33: | 
|   * Buttons for changing scales (time + amplitude) * Add tooltips to all the buttons / shortcuts * Adding events using configurable shortcuts (CTRL+number)  | 
* Pre-load next page of recordings | 
| Line 36: | Line 36: | 
|  * 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  | 
 * RAW processing: * Process correctly CTF files saved without the 3rd order grad correction (apply correction before) * Make it work for all the file formats * Events: advanced process for recombining. Example: http://www.erpinfo.org/erplab/erplab-documentation/manual/Binlister.html * Imported recordings: Offer the same interface as the RAW viewer: * Scroll bar * Events viewer / editor * Re-epoch (import from files in database) * SSP * Bad channels that can be specified at the program level (for sites that have permanently bad channels) => AS Dubarry * Colormaps: * Define manually minimum => 3 options: [0,max], [-max,max], [min,max] * Create a colormap similar to MNE, where extrema are bright * Grey out the portion of the colorbars not displayed because of the threshold  | 
| Line 47: | Line 53: | 
|   * Standard setups for al the EEG caps * RAW processing: * Allow to overwrite RAW files * Update file definition + events if time changes (ex: resample) * Make it work for the file formats == Other == * Command-line Brainstorm: for working on clusters (make sure that there are no interface interruptions)  | 
 * 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 * Intracranial electrodes: * Display in the MRI viewer * Different data type * Display time series * Forward model * Images of amplitude: [sensor x time], [trial x time], scout: [trial x time] (similaire to erpimage in eeglab) == Processes == * Connectivity: * Circle plot for NxN interactions * Synthetize + plot N sources into n ROIs (requires scout saved in the surfaces) * Menu to easily recompute teh sources in ROI form * Time-frequency: * Stat computed on time-frequency data * Validate all the operations on the time-freq files (check for mixed Measures) * Frequency bands: extended syntax (ex: [2 3 4], 10:5:90, ...) * Scouts values for timefreq on surfaces * 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 ?) * Parallel processing: Use parfor * Distributed processing: * Version of Brainstorm that can run without JAVA * Use the BIC/MEG cluster from the pipeline interface (PSOM, P.Bellec) * SSP: * Display warning if changing the !ChannelFlag while there is a Projector applied * When processing multiple files: waitbar is not behaving well * Average: * Remember how many trials were used per channel * By subject AND condition * 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 for head movements (using head position coils) * Current Source Density (CSD) => Ghislaine<<BR>>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. == Database == * Filter display of the database explorer (filename, file type, comment...)  | 
| Line 58: | Line 107: | 
|  * 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)  | 
 * GUI: Save configuration of windows (per protocol) * Add notes in the folders (text files, visible as nodes in the tree)  | 
| Line 64: | Line 112: | 
|  * Inverse: * Stable LCMV Beamformer * MUSIC * sLORETA: Values are now multiplied by 1e12 at loading for display => has do to be done in another way  | 
 * Dipole fitting * Scouts: * Stocker scouts dans les fichiers de surface * Downsample scouts with surfaces * Visualize Beamformer results (contact Zainab Fatima): * Read CTF SAM .svl * Create new file type in the database * Display as layers in the MRI viewer  | 
| Line 69: | Line 121: | 
| * Compute unconstrained and then project on the normal ? | |
| Line 81: | Line 134: | 
|   * Optimize bst_extrapm.m, add waitbar * Use the noise covariance from the database instead of recomputing it  | 
|
| Line 88: | Line 139: | 
| * Problem of having inividual trials + averages in the condition => Display warning or not? | |
| Line 90: | Line 142: | 
|  * 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  | 
|
| Line 92: | Line 147: | 
|  * 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  | 
 * Import / registration: * Improve ICP registration headpoints / scalp (chanfrein, multi-resolution, see with C Grova...) * Auto-reorientation of MRI after selected NAS / LPA / RPA * Major bug when importing surfaces for an MRI that was re-oriented manually * ICBM brain * MINC MRI reader: EMMA, NIAK (Pierre Bellec), HDF5 directly read in Matlab * ICBM average surfaces + atlas * Using CIVET pipeline for extracting surfaces  | 
| Line 98: | Line 158: | 
| == 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  | 
|
| Line 122: | Line 159: | 
| * Stat on scouts / clusters / "matrix" | |
| Line 134: | Line 172: | 
| == 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 ==  | 
== Input / output == * MRI: MINC format  | 
| Line 146: | Line 175: | 
|   * Nihon Kohden * EDF+ * !BrainVision / !BrainAmp: Get functions from EEGLAB  | 
|
| Line 150: | Line 176: | 
| * NEUROFILE = COHERENCE EEG/video !LongTerm Monitoring => Manfred Spueler | * NEUROFILE = COHERENCE EEG/video !LongTerm Monitoring | 
| Line 153: | Line 179: | 
|   * 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  | 
* MEG160 (Yokogawa/KIT) | 
| Line 159: | Line 181: | 
|   * Gzipped Nifti (new BrainVISA standard) * Analyze / Nifti:<<BR>> * Fix output function (output MRIs cannot be imported in SPM) * Use correctly field "orient" to align automatically MRI when importing  | 
|
| Line 164: | Line 182: | 
|  * 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)... * Shared kernels: do the "get bad channels" operation in a different way (reading all the files is too slow) * Rewrite all GUI functions with gui_component * Remove field "!BrainStormSubject" in the studies file: force same folder name for anat & data * Allow protocols with same folder for anat and data * Ensure that all the loaded and saved filenames are in "unix" format * Use parfor: When not available, replace directly all the "parfor" with "for" in file.m * Use Matlab GPU toolbox * Re-use panels instead of delete+create again * Optimize bst_read_events_track * Write shepards.m with new algorithm for nearest neighbors * Use tesselations_stat and tesselations_outwards to clean surfaces * Movies: Use JAVE (Java) * Screen captures: Use Yair Altman functions (in Matlab Central) * Use Matlab Coder to compile / optimize some processes  | 
|
| Line 190: | Line 184: | 
|  * Compile stand-alone version: Linux, MacOS * Version with big fonts for live demos * Add Help buttons and menus (in popups, dialog windows...) => Links to the website. * 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  | 
 * Shortcuts: * Add Help buttons and menus (in popups, dialog windows...) => Links to the website. * List of all the keyboard and mouse shortcuts * Equivalents for MacOS  | 
| Line 206: | Line 197: | 
| * Scouts: Atlases of Tzourio-Mazoyer and Brodman | |
| Line 209: | Line 199: | 
| * Processes: Processing RAW files | |
| Line 211: | Line 200: | 
| * Temporary folder | |
| Line 212: | Line 202: | 
| * MNE sample dataset | |
| Line 214: | Line 203: | 
| * MRI segmentation with !FreeSurfer => David Wheland | |
| Line 216: | Line 204: | 
| * Display the "What's new" page after downloading new version of brainstorm | |
| Line 219: | Line 206: | 
| == Unsolved problems == * Surfaces: * Influence of the software used to extract surfaces (!BrainVisa, !BrainSuite, !FreeSurfer) * Type of cortex surface to use: grey/white, grey/csf, midsurface ? * How to get good surfaces for BEM ? * Group analysis: * 1) localization on individual brain + interpolation on MNI brain ? * 2) localization directly on MNI brain ? * Normalize amplitudes across different subjects / runs ? * Online documentation of forward and inverse methods  | 
== Geeky programming details == * mri2scs: convert arguments to meters * Zip files created cannot be open with WinZip * OpenGL options: {none, software, hardware} * 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) * Bug: Menu "Use default EEG cap" doesn't work for a multiple selection (setting the same EEG cap for several subjects) * 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 * 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 * Optimize calls to bst_get, now study and subject have necessarily the same folder name  | 
What's next
A roadmap to the future developments of Brainstorm.
Next six months
Data acquisition
- Improve the acquisition of the head points and the registration MEG / MRI
 Real-time processing and display (based on FieldTrip realtime module)
- Support for optical recordings: Near-infrared spectroscopy (NIRS)
 - Support for intra-cranial recordings
 
Pre-processing
- Correction for head movements (using the continuous head localization coils)
 
Source modeling
- Computation of equivalent current dipoles
 - Display results of CTF SAM beamformer
 
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
 
Data management
- Filter the display of the tree by type / name / tag
 
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
 - 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)
 - Make it work for all the file formats
 Events: advanced process for recombining. Example: http://www.erpinfo.org/erplab/erplab-documentation/manual/Binlister.html
 - Imported recordings: Offer the same interface as the RAW viewer: 
- Scroll bar
 - Events viewer / editor
 - Re-epoch (import from files in database)
 - SSP
 
 Bad channels that can be specified at the program level (for sites that have permanently bad channels) => AS Dubarry
- Colormaps: 
Define manually minimum => 3 options: [0,max], [-max,max], [min,max]
- Create a colormap similar to MNE, where extrema are bright
 - Grey out the portion of the colorbars not displayed because of the threshold
 
 - bst_selections: 
- Add user defined combinations of sensors (eg. "double banana" for EEG)
 - Use this to produce "inversed polarity" displayes too (useful in EEG)
 
 - 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
 
 - Intracranial electrodes: 
- Display in the MRI viewer
 - Different data type
 - Display time series
 - Forward model
 
 - Images of amplitude: [sensor x time], [trial x time], scout: [trial x time] (similaire to erpimage in eeglab)
 
Processes
- Connectivity: 
- Circle plot for NxN interactions
 - Synthetize + plot N sources into n ROIs (requires scout saved in the surfaces)
 - Menu to easily recompute teh sources in ROI form
 
 - Time-frequency: 
- Stat computed on time-frequency data
 - Validate all the operations on the time-freq files (check for mixed Measures)
 - Frequency bands: extended syntax (ex: [2 3 4], 10:5:90, ...)
 - Scouts values for timefreq on surfaces
 - 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 ?)
 
 - Parallel processing: Use parfor
 - Distributed processing: 
- Version of Brainstorm that can run without JAVA
 - Use the BIC/MEG cluster from the pipeline interface (PSOM, P.Bellec)
 
 - SSP: 
Display warning if changing the ChannelFlag while there is a Projector applied
- When processing multiple files: waitbar is not behaving well
 
 - Average: 
- Remember how many trials were used per channel
 - By subject AND condition
 - 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 for head movements (using head position coils)
 
 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.
Database
- Filter display of the database explorer (filename, file type, comment...)
 - MEG protocols: More flexible organization of the database; sub-conditions to allow different runs X different conditions.
 - GUI: Save configuration of windows (per protocol)
 - Add notes in the folders (text files, visible as nodes in the tree)
 
Source modeling
- Dipole fitting
 - Scouts: 
- Stocker scouts dans les fichiers de surface
 - Downsample scouts with surfaces
 
 - Visualize Beamformer results (contact Zainab Fatima): 
- Read CTF SAM .svl
 - Create new file type in the database
 - Display as layers in the MRI viewer
 
 - Unconstrained sources: 
- Compute unconstrained and then project on the normal ?
 - 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
 
 - 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: 
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
Anatomy
- Import / registration: 
- Improve ICP registration headpoints / scalp (chanfrein, multi-resolution, see with C Grova...)
 - Auto-reorientation of MRI after selected NAS / LPA / RPA
 - Major bug when importing surfaces for an MRI that was re-oriented manually
 
 - ICBM brain 
- MINC MRI reader: EMMA, NIAK (Pierre Bellec), HDF5 directly read in Matlab
 - ICBM average surfaces + atlas
 - Using CIVET pipeline for extracting surfaces
 
 - Clustering cortex: Dimitrios, David, Yu-Teng
 
Statistics
- Stat on scouts / clusters / "matrix"
 - 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
 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
Input / output
- MRI: MINC format
 - EEG File formats: 
EEG CeeGraph
NEUROFILE = COHERENCE EEG/video LongTerm Monitoring
- EGI: Finish support for epoched files (formats 3,5,7)
 
 - Other file formats 
- MEG160 (Yokogawa/KIT)
 FieldTrip structures: In / Out
 - Define scouts from SPM / Analyze 3D masks
 
Distribution & documentation
- Shortcuts: 
Add Help buttons and menus (in popups, dialog windows...) => Links to the website.
- List of all the keyboard and mouse shortcuts
 - Equivalents for MacOS
 
 - 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)
 - Processes: Describe all the processes
 - Processes: How to write your own processes (user folder for processes)
 - Import raw recordings: Add "detect bad trials/channels" in the pipeline
 - Temporary folder
 
 - Advanced tutorials: 
- EEG (How to import an EEG cap)
 How to make and compress a movie (Brainstorm + VirtualDub + XVid)
 - Ask users to send their channel files, align on Colin, distribute
 
Geeky programming details
- mri2scs: convert arguments to meters
 Zip files created cannot be open with WinZip
- OpenGL options: {none, software, hardware}
 - 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)
 
 - Bug: Menu "Use default EEG cap" doesn't work for a multiple selection (setting the same EEG cap for several subjects)
 - 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
 - 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
 - Optimize calls to bst_get, now study and subject have necessarily the same folder name
 
