= 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 ==== Pre-processing ==== * Extend processing of continuous CTF files to all file formats * 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 <
><
><
> == Recordings == * RAW file viewer: * 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 all 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) * 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 all the EEG caps * Intracranial electrodes: * Display in the MRI viewer * Different data type * Display time series * Images of amplitude: [sensor x time], [trial x time], scout: [trial x time] (similaire to erpimage in eeglab) == Processes == * 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 * 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 * Command-line Brainstorm: for working on clusters (make sure that there are no interface interruptions) * Average: * Remember how many trials were used per channel * By subject AND condition * 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: * Do not reload the list a each display, but once when starting Brainstorm * Popup menus: Add a "Process" menu with all the available processes * 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 * 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 * Contact sheets & movies: use average of time windows instead of single instants, for each picture. == Database == * 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 == * 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 * 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' ) * Sources on surface: Display peak regions over time (time = color) => A.Gramfort * Simulation: synthesize pseudo data-files from a cortex patch (duration, amplitude, noise) == Anatomy == * BEM surfaces: * Fix the bumps at the back of the head * Surface edges: same color as the surface when color was changed * 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 * Atlas: * Use BrainVISA / !FreeSurfer labeling automatically when importing cortex surface * Finalize Brodmann scouts * Remove NCS/Talairach coordinate system, or fix it => Sylvain, Karim ND * 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 * 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 == Input / output == * EEG File formats: * Stellate * !BrainVision / !BrainAmp: Get functions from EEGLAB * Nihon Kohden * EDF+ * 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 STIM channel and generate !MarkerFile * EEGLAB: Apply ICA matrices, get number of trials for AVG files * !FieldTrip structures: In / Out * Output for all the channel file formats * Define scouts from SPM / Analyze 3D masks * Files > 2Gb: display warnings == 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 keyboard and mouse shortcuts * Send emails 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 == Geeky programming details == * 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) * 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 * 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