18900
Comment:
|
21825
|
Deletions are marked like this. | Additions are marked like this. |
Line 4: | Line 4: |
<<TableOfContents(2,2)>> |
|
Line 5: | Line 7: |
==== Source modeling ==== * Implementation of a new unified minimum norm/beamformer framework (almost finished) |
|
Line 6: | Line 11: |
* Merging the 12+3 introduction tutorials to illustrate better the latest developments ==== Source modeling ==== * Implementation of a new unified minimum norm/beamformer framework |
* Cross-validation with MNE and FieldTrip (work in progress): <<BR>>http://martinos.org/mne/dev/auto_tutorials/plot_brainstorm_auditory.html * New tutorial: MEG resting-state / OMEGA database |
Line 12: | Line 15: |
* Significance thresholding of the connectivity matrices | * Significance thresholding of the connectivity matrices (not started) |
Line 15: | Line 18: |
* Removing the dependence to the Java interface to run in headless mode * Interacting directly with distributed computing systems ==== Compatibility ==== * Reading and writing FieldTrip structures * Calling FieldTrip functions from the pipeline * Calling EEGLAB ICA functions for cleaning ocular artifacts in EEG recordings |
* Move the code to GitHub (not started) * Removing the dependence to the Java interface to run in headless mode (not started) * Call MNE and FieldTrip functions from Brainstorm GUI (work in progress) |
Line 26: | Line 25: |
* Nicer 2D topographies, standardized (using FieldTrip .lay files?) * 2DLayout (recordings + TF): Use the same standard positions, too much space between sensors |
* MEG/EEG registration: Apply the same transformation to multiple runs * 2DLayout: * Overlay multiple conditions * Does not work when DC offset is not removed |
Line 30: | Line 31: |
* 2DLayout: Doesn't work when changing page => need refresh of GlobalData.Preferences.TopoLayoutOptions.TimeWindow * Events: advanced process for recombining. Example: http://www.erpinfo.org/erplab/erplab-documentation/manual/Binlister.html * EEG reference/storage: * Bad channels that can be specified at the program level (for sites that have permanently bad channels) => AnneSo |
* Faster display: Downsample time series before plotting * Add field "comment" to markers: For clinicians to add notes (Marcel) * Events: Change the category of a selected event easily, instead of deleting/marking new * Events: Advanced process for recombining.<<BR>>Example: http://www.erpinfo.org/erplab/erplab-documentation/manual/Binlister.html == Interface == * Start Brainstorm without Java (-nodesktop) * Move code to github (or https://www.dominodatalab.com ?) * Option to increase the size of all the elements of the interface (for high res laptop screens) * Allow FieldTrip functions in compiled version * Generalize the use of the units (field .DisplayUnits): Rewrite processes to save the units correctly |
Line 35: | Line 43: |
* Allow brightness/contrast manipulations on the custom colormaps | |
Line 36: | Line 45: |
* 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<<BR>>Or allow the users to edit the LowStop parameter in bst_bandpass. * Show easily recordings maximum/values in the file viewer |
* Global colormap max: Should get the maximum across all the open files * Open new figures as tab (docked in the Figures window) |
Line 46: | Line 48: |
== Interface == * Global colormap max: Should get the maximum across all the open files * Open new windows as tab |
* Removing all the CTRL and SHIFT in the keyboard shortcuts * Display warning before opening files that are too big * Smooth display from figure_image (ERPimage, raster plot...) * Contact sheets & movies: use average of time windows instead of single instants, for each picture. |
Line 52: | Line 54: |
* Thresholding the connectivity matrices * t-tests on connectivity measures |
* Thresholding and stat tests the connectivity matrices * Connectivity on unconstrained sources: how to group the three orientations? * Review by Jan-Mathijs: http://journal.frontiersin.org/article/10.3389/fnsys.2015.00175/full * Connectivity based on band limited power (Sylvain): * Compute Hilbert/Bandpass + correlation of the envelopes * Bandpass envelopes before computing correlations? * Compute Hilbert(sensors) and then project to source space? |
Line 55: | Line 62: |
* Does not work on Matlab 2015a | * Does not display negative values correctly (correlation or difference of coherence) * Re-write using pure Matlab code and smoothed graphics |
Line 57: | Line 65: |
* Fix zoom in one region | |
Line 60: | Line 67: |
* Re-write using pure Matlab code and smoothed graphics | |
Line 64: | Line 70: |
* NxN on sensors: does not place the sensors correctly in space | |
Line 65: | Line 72: |
* Average cross-spectrum instead of concatenating epochs (to avoid discontinuities) | * Average cross-spectra instead of concatenating epochs (to avoid discontinuities)<<BR>>Explore inter-trial approaches (Esther refers to chronux toolbox) |
Line 68: | Line 75: |
* Check for minimum time window (Esther: min around 500-1000 data points) | |
Line 69: | Line 77: |
* Add progress bar management | * Add progress bar |
Line 76: | Line 84: |
* Add warning when running of short windows (because of filters) | |
Line 77: | Line 86: |
* Add input TF , to disconnect TF decomposition and PAC computation (Peter) | |
Line 82: | Line 92: |
* PAC maps: Display all sensors at once (like TF and DynamicPAC) * Hui-Ling's PAC: * https://bsp.hackpad.com/Cross-Frequency-Coupling-cChe95lhDHz * https://github.com/NCTU-BSP/MEEG * Time-resolved correlation/coherence: Display as time bands |
|
Line 86: | Line 101: |
* Multi-tapers? * Work on progress bars |
|
Line 89: | Line 102: |
* Connect NxN: Display as time series > Display warning before trying to open too many signals | |
Line 91: | Line 105: |
* Distributed processing: Brainstorm that can run without Java * Use Matlab Coder to optimize some processes: Wavelets, bandpass filter, sinusoid removal |
* Explore Matlab-Python bridge:<<BR>> https://mail.python.org/pipermail/neuroimaging/2016-June/001001.html |
Line 94: | Line 107: |
* Call FieldTrip functions from pipeline editor * Optimize opening time ofr for the menu "Add process" |
* Add FieldTrip functions: * ft_freqanalysis * ft_combineplanar * ft_volumesegment * ft_computeleadfield * ft_prepare_heamodel * Use CUDA for speeding up some operations (filtering, wavelets, etc) * Pipeline editor:<<BR>> * Add loops over subjects/conditions/trial groups * PLS: * https://www.rotman-baycrest.on.ca/index.php?section=84 * meg-pls dot weebly dot com * Krishnan 2011: http://www.ncbi.nlm.nih.gov/pubmed/20656037 * Cheung 2015: http://www.sciencedirect.com/science/article/pii/S1053811915007648 * McIntosh 2012: http://www.ncbi.nlm.nih.gov/pubmed/22804773 * McIntosh 2004: http://www.ncbi.nlm.nih.gov/pubmed/15501095 * ICA: * Exploration: Add window with spectral decomposition (useful for muscle artifacts) * Export IC time series (and then compute their spectrum): solves the problem above * Comparison JADE/Infomax: <<BR>> http://journals.plos.org/plosone/article?id=10.1371/journal.pone.0030135 * Add methods: SOBI, Fastica, AMICA/CUDICA (recommended by S Makeig) * Dimension reduction with PCA adds artifacts: Not done by default in EEGLAB<<BR>>Contact: Stephen Shall Jones ( shall-jones@infoscience.otago.ac.nz )<<BR>>Student Carl Leichter detailed this in his thesis * S Makeig: Use ICA to select the IC of interest instead of only removing artifacts * Display of spectrum for components (PSD/FFT) * Use FastICA (algo crashing) * Understand why EEG/Epilepsy tutorial data crashes if we don't limit the number of components * Add components preselection: Correlation with EOG/ECG * Import ICA matrices available in EEGLAB .set files * EEGLAB recommends ICA + trial rejection + ICA again: Impossible right now with Brainstorm<<BR>>(http://sccn.ucsd.edu/wiki/Chapter_09:_Decomposing_Data_Using_ICA) |
Line 97: | Line 138: |
* Make average the default option | |
Line 100: | Line 140: |
* Bandpass: <<BR>> | * SSS/tSSS: Get implementation from MNE * Bandpass: * Mark with an event the possible edge effects |
Line 102: | Line 144: |
* Rewrite without the force low-pass filter at Fs/3 | * Rewrite without the forced low-pass filter at Fs/3 |
Line 106: | Line 148: |
* Apply on the signal before any frequency/connectivity/PAC analysis * Using ARIMA(5,0,1) * Example code:<<BR>><<BR>> {{{ arm = mean(lpc(diff(detrend(Fbase')),5)); % detrend and diff PRE = filter(arm,1,diff(detrend(Fbase')))'; % apply to the data| X = filter(arm,1,diff(detrend(F')))'; X(:,1:length(arm)) = []; Time = tndx((length(arm)+2):end)/1000 - SOT; }}} |
* ARIMA(5,0,1): Apply on the signal before any frequency/connectivity/PAC analysis |
Line 118: | Line 151: |
* Rewrite to have the same input as coherence * Normalize with the total power (TF/sum(TF,3)) |
* Rewrite to have the same input as coherence (frequency resolution instead of window length) * Use the progress bar * Allow display of Avg+StdErr |
Line 122: | Line 157: |
* Interpolate the bad channels * ICA for cleaning eye movements in EEG low density (SSP don't work well) * Band-limited power envelope * Reports: * Save as HTML / PDF * Do not display the intermediate files * Pipeline editor: * Add loops over subjects/conditions/trial groups |
* Use Matlab Coder to optimize some processes: Wavelets, bandpass filter, sinusoid removal * Reports: Click on link reopens exactly the figure |
Line 131: | Line 160: |
* Standardize using: diff before calculation + cumsum (checkbox "flatten data") * Frequency bands: extended syntax (ex: [2 3 4], 10:5:90, ...) * Display logs as negative |
* Multi-tapers * Short-time Fourier transform: http://www.mikexcohen.com/lectures.html * Matching pursuit: http://m.jneurosci.org/content/36/12/3399.abstract?etoc * Bug: Display logs as negative * Bug: 3D figures: Colormaps with "log" option doesn't work * Bug: Difference of power displayed in log: problems (Soheila) |
Line 137: | Line 169: |
* Impossible to keep complex values for unconstrained sources * Pad short epochs with zero values for getting lower frequencies * Hilbert with time bands very slow on very long files (eg. 3600s at 1000Hz) because the time vector is still full (10^7 values): save compressed time vector instead. * Extend clusters tab to display of TF to overlay TF signals (Svet) * When normalizing with baseline: Propagate with the edge effects marked in TFmask * Allow running TF on montages * Review continuous files in time-frequency space (for epilepsy) |
|
Line 138: | Line 177: |
* Detection of bad segments in the RAW files (Beth) | |
Line 141: | Line 179: |
* Average: * Remember how many trials were used per channel * Save standard deviation * Display standard deviation as a halo around the time series |
* Events detection: Add option "std" vs "amplitude" |
Line 149: | Line 184: |
* Resample continuous files * Current Source Density (CSD) => Ghislaine<<BR>>http://psychophysiology.cpmc.columbia.edu/software/CSDtoolbox/index.html * Other processes:<<BR>> |
* Other processes: |
Line 155: | Line 188: |
* 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 |
|
Line 162: | Line 191: |
* Use field process field "Group" to separate Input/Processing/Output options * Use new Matlab functions: movmean, movsum, movmedian, movmax, movmin, movvar, movstd |
|
Line 164: | Line 195: |
* Optimize startup speed * Start Brainstorm without Java (-nodesktop) * Sort files by comment |
* Add buttons to sort files: by name, by comment, by date |
Line 168: | Line 197: |
* Group matrix files => allow to process matrix files by trial types | * Navigator: Use F2/F3 to explore the entire database (right now F2 works in a weird way) * Matrix files: Allow to be dependent from other files |
Line 176: | Line 206: |
* Allow matrix files to be attached to other files | * Default headmodel lost when reloaded: Keep selection on the hard drive (in brainstormstudy.mat) * protocol.mat can be too big: do not store the results links in it (and recreate when loading) |
Line 186: | Line 218: |
* Various initiatives: http://samirdas.github.io/Data_sharing.html#/ | |
Line 188: | Line 221: |
* Mixed head models: * Create scout form maximum doesn't work (menu Sources > Max value) * Set loose parameter from the interface * Volume grid: * Optimize: 3D display (better than 9x9 cubes) * Optimize: vol_dilate (with 26 neighbors) * Menu Sources > Simulate recordings: * Do not close the 3D figures after generating a new file * Add a process equivalent to this menu * Panel Get coordinates: Add button "find maximum" |
|
Line 189: | Line 232: |
* Finish dipole scanning (allow the tab to control multiple figures separately) * Dipole fitting: We will not implement non-linear fits, recommended use of dense volume grids |
* Project individual dipoles files on a template |
Line 192: | Line 234: |
* Read easily dipole coordinates: Click on one selects it and open the panel Get coordinates * Panel Get coordinates: Add button "find maximum" * Create scout form maximum: Not available yet for mixed/volume head model. |
* BEM single sphere: Get implementation from MNE |
Line 196: | Line 236: |
* Inner and outer skull surfaces generator from FieldTrip (needs SPM, probably not so different from BST) | * Inner and outer skull surfaces generator from FieldTrip (needs SPM) |
Line 203: | Line 243: |
* Compute unconstrained and then project on the normal ? * Difference and stat should be: norm(A) - norm(B) |
|
Line 207: | Line 245: |
* Volume grid: * Scouts 3D * Test volume sources with all the subsequent processes (timefreq, stat...) * Optimize: 3D display (better than 9x9 cubes) * Optimize: vol_dilate (with 26 neighbors) |
|
Line 219: | Line 252: |
* When deploying to other conditions: Apply destination SSP (NoiseCov = SSP . NoiseCov . SSP' ) | |
Line 221: | Line 253: |
* Simulation: synthesize pseudo data-files from a cortex patch (duration, amplitude, noise) | |
Line 223: | Line 254: |
* 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 |
* Beamformers from FieldTrip (LCMV, SAM) |
Line 229: | Line 258: |
* Display volume scouts and surface scouts at the same time | |
Line 237: | Line 265: |
* Keep options for inverse computation * OpenMEEG: Post example datasets for the remaining issues: * https://github.com/openmeeg/openmeeg/issues/64 * https://github.com/openmeeg/openmeeg/issues/68 * Example protocol ECOG: doesn't work |
|
Line 239: | Line 272: |
* Project all sub-cortical structures to default anatomy | * MNI coordinates: * Compute with FieldTrip: ft_prepare_sourcemodel (linear and non-linear) => Peter * FreeSurfer: * Do not save "mid" surface unless specified explicitely with the process version * Add cerebellum to default model generated with "Import FS anatomy" * Edit fiducials: Replace 6 text boxes with 1 for easy copy-paste (see fiducials.m) * BrainVISA: Add support for MarsAtlas (Guillaume A) * BrainSuite: * Use BrainSuite inner skull for surface generation * Use same colors for left and right for anatomical atlases |
Line 243: | Line 286: |
* Project scouts betweens subjects and between hemispheres | |
Line 247: | Line 289: |
* Co-register MRI and CT for electrodes marking in the MRI Viewer | * Menu head model > Copy to other conditions/subjects (check if applicable first) |
Line 249: | Line 291: |
* Import / registration: * Major bug when importing surfaces for an MRI that was re-oriented manually * Use mid-gray instead of pial surface? * Smooth surface: Fix little spikes to irregularities in the mesh * Menu head model > Copy to other conditions/subjects (check if applicable first) * Add cerebellum to default model generated with "Import FS anatomy" |
* Optimize computation interpolation MRI-surface (tess_tri_interp) * Render surface envelope in the MRI as a thin line instead of the full interpolation matrix * Major bug when importing surfaces for an MRI that was re-oriented manually * Smooth surface: Fix little spikes due to irregularities in the mesh |
Line 256: | Line 296: |
* tess_mrimask: Not robust enough to major holes in the brain * Bug: Hide scouts in the preview of the grid for volume head models == ECOG/SEEG == * Contact positions: Import / set / detect * Import/export electrodes positions in MNI/SCS/MRI coordinates * Co-register MRI and CT for electrodes marking in the MRI Viewer<<BR>>=> Mutual information: BrainVISA > Outils > Recalage rigide * Automatic segmentation of CT scans: See project of Rodrigo Paz (Marseille/Timone) * Import from FreeSurfer/FreeView: Problem of difference between RAS and TkRegRAS: http://neuroimage.usc.edu/forums/showthread.php?1958-SEEG-electrodes-and-subject-s-anatomy-are-not-alligned * Add history: Save modifications and transformations applied to the channel files (Marcel) * ECOG: How to handle cases where not all the grid contacts are in the channel file? (Marcel) * Project contact positions across subjects or templates (Marcel) * Display: * Display SEEG+ECOG contacts at the same time * Better way to represent ECOG strips that are not in contact with the skull (new type?) * SEEG length: count from the most superficial contact * SEEG default view: transparent cortex instead of MRI viewer (Marcel) * ECOG: Project on cortex instead of inner skull, just for display (Marcel) * Color each strip/grid differently * Bad channels: Contacts greyed out instead of ignored (Marcel) * ECOG: Topography display without the 3D coordinates (Marcel) * 2DLayout: Should not try to use the actual position of the sensors, just the grids/strips. * Display time in H:M:S * Alternatives to OpenMEEG: SimBio/FieldTrip? Matti Stenroos? NFT/NIST? * Prepare tutorial with public dataset (Marcel) |
|
Line 258: | Line 323: |
* ANOVA: Use LENA functions | * ANOVA: * Use LENA functions(?) |
Line 261: | Line 327: |
* 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<<BR>> => 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 |
* New process to test for Gaussianity using swtest * PLS: Partial Least Squares * Simulate recordings with specific properties, for stat validation * Quality control before statistics, on condition averages across subjects:<<BR>>mean(baseline)/std(baseline): shows bad subject quickly. * Use SurfStat: Impements interesting things, like an analytical cluster-based p-value correction (Random-field theory which is used in SPM) - Peter |
Line 284: | Line 335: |
* 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_*) |
* XDF import: Use the EEGLAB plugin, contact Martin Bleichner (Oldenburg) * 4D file format: * Use reader from MNE-Python: mne.io.read_raw_kit (doesn't require Yokogawa slow library) * Reference gradiometers: Keep the orientation of the first or second coil? * Reference gradiometers: Add the sensor definition from coil_def.dat * Validate with phantom recordings that noise compensation is properly taken into account * References at too far from the head sensors in Marseille 4D system * The noise compensation is considered to be always applied on the recordings, not sure this assumption is always correct * 4D phantom tutorial (JM Badier?) * Export to EDF |
Line 288: | Line 346: |
* Nihon Koden * Nicolet EEG: Get from from MNE |
|
Line 292: | Line 352: |
* Selection of conditions in script mode | |
Line 294: | Line 353: |
* Allow epoched files with recordings saved in external files (now external files implies continuous recordings) * BST-BIN: Add compression |
* Allow epoched files with recordings saved in external files * BST-BIN: Add compressionto .bst * BIDS-MEG: Automatic loading of BIDS-structured databases |
Line 297: | Line 357: |
* gTec EEG recordings: Read directly from the HDF5 files instead of the Matlab exports. * Use new Matlab functions readtable/writetable (2006b): for Excel and text files |
|
Line 299: | Line 361: |
* Document iEEG in "What's new" * Rewrite basic 12+3 tutorials: group in one series * Illustrate 2D Layout * Illustrate unconstrained sources * Cleaning threads on the forum * Add Help buttons and menus (in popups, dialog windows...) => Links to the website. * Publication list: Fold by years * Finish existing tutorials: * Dipoles * Auditory: Extend to MNE/EEGLAB/SPM * Auditory: Finish scripts * Group MEM/Epilepsy + Epilepsy tutorials |
* Workflows FieldTrip: http://www.fieldtriptoolbox.org/faq/what_types_of_datasets_and_their_respective_analyses_are_used_on_fieldtrip * Reference tutorials on Google scholar + ResearchGate * Google Analytics: Create template and update the section of the Community page |
Line 313: | Line 365: |
* MEG connectome * Scrambled faces (SPM/MNE-Python) * Describe all the processes * Statistics * Coherence (cortico-muscular ?) * Intra-cranial recordings (Average ref by groups using Comment field) |
* MEG steady-state / high-gamma visual * MEG resting state + OMEGA (Guoimar, Jeremy, Beth) * Intra-cranial recordings (Marcel) * Connectivity: Cortico-muscular coherence |
Line 320: | Line 370: |
* 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 * Modify a structure manually: Export to Matlab/Import from Matlab * Missing in tutorial "Export to SPM": Add section "Compare with Brainstorm" |
|
Line 332: | Line 372: |
* Reference tutorials on Google scholar * Play videos on wiki with <video> tag (save videos in .ogg) |
* Brainstorm File Exchange: Distribute scripts that users would like to share, but that are too specific to be included in the Brainstorm distribution. => On GitHub * Deface the MRIs of all the tutorials |
Line 336: | Line 376: |
* Workshops: * Create scouts doesn't work: scout created on the other side of the brain * Import anatomy folder: Out of memory on Win 32bits (restart Matlab) * Compute head model: Out of memory on Win 32bits * Bandpass filter: Out of memory (Auditory workshop) * Bug workshop Michael (Mint 12/gnome3/linux 3.0.0-12, KWin/Mutter/Compiz) * Cannot import two .ds folders at once * Colors inverted in the PSD/TF plots (power vs. log) * Cannot type the name of a channel in "Detect ECG" * Image viewer: Difficult to get to 100% |
* Screen capture: * Bug on Win8/Win10: doesn't capture the correct part of the screen * Window managers with fading effect: captures the top window * Image viewer: * Difficult to get to 100% * Buggy on some systems * 2DLayout: * (TF) Units are weird with % values * (TF) Difficult to navigate in frequencies: Scaling+changing frequency resets the scaling * Progress bar: * Doesn't close properly on some Linux systems * Focus requests change workspace when processing constantly (Linux systems) * MacOS bugs: * Buttons {Yes,No,Cancel} listed backwards * Record tab: Text of epoch number is too big * Colormap menus: Do not work well on compiled MacOSX 10.9.5 and 10.10 * Matlab bugs: * Interface looks small on screens with very high resolutions: Reduce the resolution * Event markers are not visible anymore with the sequence: Open MEG, open EOG, close MEG * in_bst_data_multi: If trials have different sizes, output is random (the one of the first file) * Edit scout in MRI: small modifications cause huge increase of the scout size |
Line 347: | Line 398: |
* Smooth TF windows that contain multiple plots * 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 * Edit scout in MRI: small modifications cause huge increase of the scout size * Reports: Text size is too small with Java 1.5 (2006b-2007a) * Optimize MRI viewer with patch() instead of image() * Matlab 2014b bug with rmdir/movefile: Enter but never returns from the call * 2DLayout (time series): * Sometimes the lines are not visible * Does not work when DC offset is not removed * 2DLayout (TF): Images are too far apart with EEG 20 channels * Colormap menus: Do not work well on compiled MacOSX 10.9.5 and 10.10 * Event markers are not visible anymore with the sequence: Open MEG, open EOG, close MEG. |
|
Line 366: | Line 400: |
* Removing all the CTRL and SHIFT in the keyboard shortcuts | |
Line 368: | Line 401: |
* mri2scs: convert arguments to meters * Interpolations: Use scatteredInterpolant, griddedInterpolant, triangulation.nearestNeighbor (Matlab 2014b) |
* Processes with "radio" and "radio_line" options: Replace with "radio_label" and "radio_linelabel" * Interpolations: Use scatteredInterpolant, griddedInterpolant, triangulation.nearestNeighbor (2014b) |
Line 371: | Line 404: |
* Shared kernels: do the "get bad channels" operation in a different way (reading all the files is too slow) | * Shared kernels: "get bad channels" operation in a different way (reading all the files is too slow) |
Line 380: | Line 413: |
* Line smoothing / anti-aliasing (time series figures) | |
Line 382: | Line 414: |
* Replace handle "0" with bst_get('groot') * At the end of bst_startup in compiled mode, replace loop with waitfor(jFrame) |
|
Line 385: | Line 415: |
* in_bst_results (isFull=1): DataFile should be relative |
What's next
A roadmap to the future developments of Brainstorm.
Contents
Current topics
Source modeling
- Implementation of a new unified minimum norm/beamformer framework (almost finished)
Documentation
Cross-validation with MNE and FieldTrip (work in progress):
http://martinos.org/mne/dev/auto_tutorials/plot_brainstorm_auditory.html- New tutorial: MEG resting-state / OMEGA database
Functional connectivity
- Significance thresholding of the connectivity matrices (not started)
Computation
Move the code to GitHub (not started)
- Removing the dependence to the Java interface to run in headless mode (not started)
Call MNE and FieldTrip functions from Brainstorm GUI (work in progress)
Recordings
- MEG/EEG registration: Apply the same transformation to multiple runs
- 2DLayout:
- Overlay multiple conditions
- Does not work when DC offset is not removed
- RAW file viewer:
- Pre-load next page of recordings
- Faster display: Downsample time series before plotting
- Add field "comment" to markers: For clinicians to add notes (Marcel)
- Events: Change the category of a selected event easily, instead of deleting/marking new
Events: Advanced process for recombining.
Example: http://www.erpinfo.org/erplab/erplab-documentation/manual/Binlister.html
Interface
- Start Brainstorm without Java (-nodesktop)
Move code to github (or https://www.dominodatalab.com ?)
- Option to increase the size of all the elements of the interface (for high res laptop screens)
Allow FieldTrip functions in compiled version
Generalize the use of the units (field .DisplayUnits): Rewrite processes to save the units correctly
- Colormaps:
- Allow brightness/contrast manipulations on the custom colormaps
- Create a colormap similar to MNE, where extrema are bright
- Global colormap max: Should get the maximum across all the open files
- Open new figures as tab (docked in the Figures window)
- Copy figures to clipboard (with the screencapture function)
- Removing all the CTRL and SHIFT in the keyboard shortcuts
- Display warning before opening files that are too big
- Smooth display from figure_image (ERPimage, raster plot...)
Contact sheets & movies: use average of time windows instead of single instants, for each picture.
Connectivity
- Thresholding and stat tests the connectivity matrices
- Connectivity on unconstrained sources: how to group the three orientations?
Review by Jan-Mathijs: http://journal.frontiersin.org/article/10.3389/fnsys.2015.00175/full
- Connectivity based on band limited power (Sylvain):
- Compute Hilbert/Bandpass + correlation of the envelopes
- Bandpass envelopes before computing correlations?
- Compute Hilbert(sensors) and then project to source space?
- Graph view:
- Does not display negative values correctly (correlation or difference of coherence)
- Re-write using pure Matlab code and smoothed graphics
- Fixed scales for intensity sliders
- Text bigger
- Too much data in appdata
- Fixed scales for intensity sliders
- Add "=" shortcut for having graphs with similar configurations
- Disable zoom in one region (serious bugs)
- NxN on sensors: does not place the sensors correctly in space
- Coherence:
Average cross-spectra instead of concatenating epochs (to avoid discontinuities)
Explore inter-trial approaches (Esther refers to chronux toolbox)
- Granger:
- Crashes sometimes: improve stability
- Check for minimum time window (Esther: min around 500-1000 data points)
- Re-write and optimize code
- Add progress bar
- PLV:
- Add p-values
- Remove evoked
- Optimize code
- Add time integration
- Unconstrained sources
- Add warning when running of short windows (because of filters)
- PAC:
- Add input TF , to disconnect TF decomposition and PAC computation (Peter)
- Refine frequency vector of low frequencies
- How many central frequencies to use in bst_pac?
- Change filters: no chirplet functions
- bst_freqfilter: Use nfcomponents like in bst_pac
- Esther recommended a larger frequency binning of the PAC estimation
- PAC maps: Display all sensors at once (like TF and DynamicPAC)
- Hui-Ling's PAC:
- Time-resolved correlation/coherence: Display as time bands
- Other metrics:
- Coherence by bands: bst_coherence_band_welch.m
- Granger by bands: bst_granger_band.m
- Inter-trial coherence
Tutorial coherence [1xN] : Reproduce FieldTrip results?
Connect NxN: Display as time series > Display warning before trying to open too many signals
Processes
Explore Matlab-Python bridge:
https://mail.python.org/pipermail/neuroimaging/2016-June/001001.html- Allow processes in Python and Java
Add FieldTrip functions:
- ft_freqanalysis
- ft_combineplanar
- ft_volumesegment
- ft_computeleadfield
- ft_prepare_heamodel
- Use CUDA for speeding up some operations (filtering, wavelets, etc)
Pipeline editor:
- Add loops over subjects/conditions/trial groups
- PLS:
- meg-pls dot weebly dot com
Krishnan 2011: http://www.ncbi.nlm.nih.gov/pubmed/20656037
Cheung 2015: http://www.sciencedirect.com/science/article/pii/S1053811915007648
McIntosh 2012: http://www.ncbi.nlm.nih.gov/pubmed/22804773
McIntosh 2004: http://www.ncbi.nlm.nih.gov/pubmed/15501095
- ICA:
- Exploration: Add window with spectral decomposition (useful for muscle artifacts)
- Export IC time series (and then compute their spectrum): solves the problem above
Comparison JADE/Infomax:
http://journals.plos.org/plosone/article?id=10.1371/journal.pone.0030135- Add methods: SOBI, Fastica, AMICA/CUDICA (recommended by S Makeig)
Dimension reduction with PCA adds artifacts: Not done by default in EEGLAB
Contact: Stephen Shall Jones ( shall-jones@infoscience.otago.ac.nz )
Student Carl Leichter detailed this in his thesis- S Makeig: Use ICA to select the IC of interest instead of only removing artifacts
- Display of spectrum for components (PSD/FFT)
- Use FastICA (algo crashing)
- Understand why EEG/Epilepsy tutorial data crashes if we don't limit the number of components
- Add components preselection: Correlation with EOG/ECG
- Import ICA matrices available in EEGLAB .set files
EEGLAB recommends ICA + trial rejection + ICA again: Impossible right now with Brainstorm
(http://sccn.ucsd.edu/wiki/Chapter_09:_Decomposing_Data_Using_ICA)
- 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)
- SSS/tSSS: Get implementation from MNE
- Bandpass:
- Mark with an event the possible edge effects
- Offer option: bst_bandpass_fft / bst_bandpass_filter
- Rewrite without the forced low-pass filter at Fs/3
- Show warning when using inappropriate high-pass filter (precision too high)
- Use FIR filter
- Spectral flattening (John):
- ARIMA(5,0,1): Apply on the signal before any frequency/connectivity/PAC analysis
- PSD:
- Rewrite to have the same input as coherence (frequency resolution instead of window length)
- Use the progress bar
Allow display of Avg+StdErr
Remove line noise: http://www.nitrc.org/projects/cleanline
- Use Matlab Coder to optimize some processes: Wavelets, bandpass filter, sinusoid removal
- Reports: Click on link reopens exactly the figure
- Time-frequency:
- Multi-tapers
Short-time Fourier transform: http://www.mikexcohen.com/lectures.html
Matching pursuit: http://m.jneurosci.org/content/36/12/3399.abstract?etoc
- Bug: Display logs as negative
- Bug: 3D figures: Colormaps with "log" option doesn't work
- Bug: Difference of power displayed in log: problems (Soheila)
- 2D Layout in spectrum
- Make much faster and more memory efficient (C functions coded by Matti ?)
- TF scouts: should display average of TF maps
- Impossible to keep complex values for unconstrained sources
- Pad short epochs with zero values for getting lower frequencies
- Hilbert with time bands very slow on very long files (eg. 3600s at 1000Hz) because the time vector is still full (10^7 values): save compressed time vector instead.
- Extend clusters tab to display of TF to overlay TF signals (Svet)
- When normalizing with baseline: Propagate with the edge effects marked in TFmask
- Allow running TF on montages
- Review continuous files in time-frequency space (for epilepsy)
- Artifact detection:
- Artifact rejection like SPM: if bad in 20%, bad everywhere
- Test difference between adjacent samples
- Events detection: Add option "std" vs "amplitude"
- 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
- Other processes:
- Moving average
- Max
- Median
- Simulation:
Fix units in simulation processes => no *1e-9 in "simulate recordings"
- Use "add noise" process from Hui-Ling (in Work/Dev/Divers)
- Use field process field "Group" to separate Input/Processing/Output options
- Use new Matlab functions: movmean, movsum, movmedian, movmax, movmin, movvar, movstd
Database
- Add buttons to sort files: by name, by comment, by date
- MEG protocols: More flexible organization of the database; sub-conditions to allow different runs X different conditions.
- Navigator: Use F2/F3 to explore the entire database (right now F2 works in a weird way)
- Matrix files: Allow to be dependent from other files
- Add notes in the folders (text files, visible as nodes in the tree)
- Screen captures: save straight to the database
- Rename multiple files
- Default headmodel lost when reloaded: Keep selection on the hard drive (in brainstormstudy.mat)
- protocol.mat can be too big: do not store the results links in it (and recreate when loading)
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
Various initiatives: http://samirdas.github.io/Data_sharing.html#/
Source modeling
- Mixed head models:
Create scout form maximum doesn't work (menu Sources > Max value)
- Set loose parameter from the interface
- Volume grid:
- Optimize: 3D display (better than 9x9 cubes)
- Optimize: vol_dilate (with 26 neighbors)
Menu Sources > Simulate recordings:
- Do not close the 3D figures after generating a new file
- Add a process equivalent to this menu
- Panel Get coordinates: Add button "find maximum"
- Dipoles:
- Project individual dipoles files on a template
- panel_dipoles: Doesn't work with multiple figures
- BEM single sphere: Get implementation from MNE
- Stenroos 2014 paper: Include the following methods
Inner and outer skull surfaces generator from FieldTrip (needs SPM)
- 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:
- Stat and connectivity: what to do? (re-send email John+Sylvain)
- Overlapping spheres: improve the estimation of the spheres for the frontal lobes
- 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
Sources on surface: Display peak regions over time (time = color) => A.Gramfort
Calculate ImagingKernel * Gain for a scout
Beamformers from FieldTrip (LCMV, SAM)
- Time-frequency beamformers:
- Band-pass everything in different frequency bands + Source estimation + TF
- Ask data to Sarang where he sees effects that cannot be extracted with MN followed by TF
- Process "Extract scouts time series": Add PCA option (replace isnorm with choice PCA/Norm)
- BEM: Fix unstable results when one vertex is too close from the layers (5mm ?)
- Hui-Ling beamformers:
- More explanations about what is in NAI and Spatial filters
Explain that is this is better to study effects extended in time (Ntime > Nsensors)
- Group LCMV+MCB
- Condition LEFT median nerve: very bad results
- Keep options for inverse computation
- OpenMEEG: Post example datasets for the remaining issues:
- Example protocol ECOG: doesn't work
Anatomy
- MNI coordinates:
Compute with FieldTrip: ft_prepare_sourcemodel (linear and non-linear) => Peter
FreeSurfer:
- Do not save "mid" surface unless specified explicitely with the process version
- Add cerebellum to default model generated with "Import FS anatomy"
- Edit fiducials: Replace 6 text boxes with 1 for easy copy-paste (see fiducials.m)
BrainVISA: Add support for MarsAtlas (Guillaume A)
BrainSuite:
Use BrainSuite inner skull for surface generation
- Use same colors for left and right for anatomical atlases
- 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
- Display scouts in a tree: hemisphere, region, subregion
- Downsample to atlas: allow on timefreq/connect files
- Sort scouts by region in process options
Menu head model > Copy to other conditions/subjects (check if applicable first)
- Generate mixed density surfaces
- Optimize computation interpolation MRI-surface (tess_tri_interp)
- Render surface envelope in the MRI as a thin line instead of the full interpolation matrix
- Major bug when importing surfaces for an MRI that was re-oriented manually
- Smooth surface: Fix little spikes due to irregularities in the mesh
- Add eyes models to attract eye activity
- tess_mrimask: Not robust enough to major holes in the brain
- Bug: Hide scouts in the preview of the grid for volume head models
ECOG/SEEG
- Contact positions: Import / set / detect
- Import/export electrodes positions in MNI/SCS/MRI coordinates
Co-register MRI and CT for electrodes marking in the MRI Viewer
=> Mutual information: BrainVISA > Outils > Recalage rigide- Automatic segmentation of CT scans: See project of Rodrigo Paz (Marseille/Timone)
Import from FreeSurfer/FreeView: Problem of difference between RAS and TkRegRAS: http://neuroimage.usc.edu/forums/showthread.php?1958-SEEG-electrodes-and-subject-s-anatomy-are-not-alligned
- Add history: Save modifications and transformations applied to the channel files (Marcel)
- ECOG: How to handle cases where not all the grid contacts are in the channel file? (Marcel)
- Project contact positions across subjects or templates (Marcel)
- Display:
- Display SEEG+ECOG contacts at the same time
- Better way to represent ECOG strips that are not in contact with the skull (new type?)
- SEEG length: count from the most superficial contact
- SEEG default view: transparent cortex instead of MRI viewer (Marcel)
- ECOG: Project on cortex instead of inner skull, just for display (Marcel)
- Color each strip/grid differently
- Bad channels: Contacts greyed out instead of ignored (Marcel)
- ECOG: Topography display without the 3D coordinates (Marcel)
- 2DLayout: Should not try to use the actual position of the sensors, just the grids/strips.
- Display time in H:M:S
Alternatives to OpenMEEG: SimBio/FieldTrip? Matti Stenroos? NFT/NIST?
- Prepare tutorial with public dataset (Marcel)
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
- New process to test for Gaussianity using swtest
- PLS: Partial Least Squares
- Simulate recordings with specific properties, for stat validation
Quality control before statistics, on condition averages across subjects:
mean(baseline)/std(baseline): shows bad subject quickly.Use SurfStat: Impements interesting things, like an analytical cluster-based p-value correction (Random-field theory which is used in SPM) - Peter
Input / output
- XDF import: Use the EEGLAB plugin, contact Martin Bleichner (Oldenburg)
- 4D file format:
- Use reader from MNE-Python: mne.io.read_raw_kit (doesn't require Yokogawa slow library)
- Reference gradiometers: Keep the orientation of the first or second coil?
- Reference gradiometers: Add the sensor definition from coil_def.dat
- Validate with phantom recordings that noise compensation is properly taken into account
- References at too far from the head sensors in Marseille 4D system
- The noise compensation is considered to be always applied on the recordings, not sure this assumption is always correct
- 4D phantom tutorial (JM Badier?)
- Export to EDF
- EEG File formats:
- Nihon Koden
- Nicolet EEG: Get from from MNE
EEG CeeGraph
- EGI: Finish support for epoched files (formats 3,5,7)
- BCI2000 Input (via EEGLAB plugin)
- EEGLAB import:
- Support for binary AND epoched files (now it's one or the other)
- Allow epoched files with recordings saved in external files
- BST-BIN: Add compressionto .bst
- BIDS-MEG: Automatic loading of BIDS-structured databases
- Review raw on all the file formats (ASCII EEG and Cartool missing)
- gTec EEG recordings: Read directly from the HDF5 files instead of the Matlab exports.
- Use new Matlab functions readtable/writetable (2006b): for Excel and text files
Distribution & documentation
Workflows FieldTrip: http://www.fieldtriptoolbox.org/faq/what_types_of_datasets_and_their_respective_analyses_are_used_on_fieldtrip
Reference tutorials on Google scholar + ResearchGate
- Google Analytics: Create template and update the section of the Community page
- New tutorials:
- MEG steady-state / high-gamma visual
- MEG resting state + OMEGA (Guoimar, Jeremy, Beth)
- Intra-cranial recordings (Marcel)
- Connectivity: Cortico-muscular coherence
- Co-register MEG runs (Beth)
- Missing in page "Cite Brainstorm": Add all the methods used in the software
Brainstorm File Exchange: Distribute scripts that users would like to share, but that are too specific to be included in the Brainstorm distribution. => On GitHub
- Deface the MRIs of all the tutorials
Current bugs
- Screen capture:
- Bug on Win8/Win10: doesn't capture the correct part of the screen
- Window managers with fading effect: captures the top window
- Image viewer:
- Difficult to get to 100%
- Buggy on some systems
- 2DLayout:
- (TF) Units are weird with % values
- (TF) Difficult to navigate in frequencies: Scaling+changing frequency resets the scaling
- Progress bar:
- Doesn't close properly on some Linux systems
- Focus requests change workspace when processing constantly (Linux systems)
- MacOS bugs:
- Buttons {Yes,No,Cancel} listed backwards
- Record tab: Text of epoch number is too big
- Colormap menus: Do not work well on compiled MacOSX 10.9.5 and 10.10
- Matlab bugs:
- Interface looks small on screens with very high resolutions: Reduce the resolution
- Event markers are not visible anymore with the sequence: Open MEG, open EOG, close MEG
- in_bst_data_multi: If trials have different sizes, output is random (the one of the first file)
- Edit scout in MRI: small modifications cause huge increase of the scout size
- Canolty maps computation: Fix progress bar
Geeky programming details
- Hide Java panels instead of deleting them
- Processes with "radio" and "radio_line" options: Replace with "radio_label" and "radio_linelabel"
- Interpolations: Use scatteredInterpolant, griddedInterpolant, triangulation.nearestNeighbor (2014b)
- bst_warp and channel_project: Use tess_parametrize_new instead of tess_parametrize
- Shared kernels: "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
- Fix all the 'todo' blocks in the code
- Error message: Add a link to report directly the bug on the forum