20010
Comment:
|
18616
|
Deletions are marked like this. | Additions are marked like this. |
Line 6: | Line 6: |
== Current topics == ==== Source modeling ==== * Implementation of a new unified minimum norm/beamformer framework (work in progress) ==== Statistics ==== * Implementation of new parametric and non-parametric tests (work in progress) ==== Documentation ==== * Standard workflows for different types of data and experiments (work in progress) ==== Functional connectivity ==== * Significance thresholding of the connectivity matrices (not started) ==== Computation ==== * Removing the dependence to the Java interface to run in headless mode (not started) * Interacting directly with distributed computing systems (not started) <<BR>><<BR>> |
|
Line 26: | Line 7: |
* 2D topographies: * Nicer topographies with circle around 2DDisc (similar to EEGLAB plots) * Standardized plots (using FieldTrip .lay files?) * Aligned on the midline at least * Contour lines sometimes messed up with Elekta recordings * Make the surface on which the values are interpolated simpler |
* Default montages for EEG (sensor selection) * Sleep scoring wish list (Emily C): * Configurable horizontal lines (for helping detecting visually some thresholds) * Mouse ruler: Measure duration and amplitude by dragging the mouse. * Automatic spindle detector * https://neuroimage.usc.edu/forums/t/page-overlap-while-reviewing-raw-file-a-way-to-set-to-0/11229/13 * RAW file viewer speed: * Downsample before filtering? (attention to the filter design) * Add parameter to make the visual downsampling more or less aggressive * Pre-load next page of recordings * Keep the filter specifications in memory instead of recomputing for every page |
Line 33: | Line 19: |
* Montages: * Allow to set the color for each channel separately * Allow the superposition of channels (NIRS) * 2DLayout: * Use the same standard positions, too much space between sensors (Recordings + TF) * Overlay multiple conditions * RAW files: Doesn't work when changing page => need refresh of GlobalData.Preferences.TopoLayoutOptions.TimeWindow * Same shortcuts as the raw file viewer (right-click + move for gain) * Add support for montages * RAW file viewer: * Show easily the maximum value at the current time point * Pre-load next page of recordings * 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 * Filtering: * Use short FIR filters instead of IIR for bandpass, to limit the ringing (bad for Hilbert as well) * Or allow the users to edit the LowStop parameter in bst_bandpass * Bad channels specified at the program level (for sites that have permanent bad channels: AS) |
* Create heat maps: Maybe with matlab function heatmap? * BioSemi: Add menu "Convert naming system" to rename channels into 10-10 (A1=>FPz) |
Line 55: | Line 23: |
* Start Brainstorm without Java (-nodesktop) * Generalize the user of the units (field .Units): Rewrite processes to save the units correctly |
* Add a warning when computing a forward model with > 100000 sources (check selection) * Snapshot: Save as image / all figures (similar to Movie/all figure) * Generalize the use of the units (field .DisplayUnits): Rewrite processes to save the units correctly |
Line 59: | Line 29: |
* Create a colormap similar to MNE, where extrema are bright | |
Line 61: | Line 30: |
* Open new figures as tab (docked in the Figures window) | |
Line 63: | Line 31: |
* 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. * Contact sheets: Allow explicit list of times in input (+ display as in MNE-Python with TS) * Display CTF coils: Show discs instead of squares * Progress bar: Add a "Cancel" button * Error message: Add a link to report directly the bug on the forum * Reorganize menus (Dannie's suggestion): {{attachment:dannie_menus.png||width="382",height="237"}} |
Line 68: | Line 40: |
* Thresholding the connectivity matrices * Stat tests on connectivity measures * Check why our Hilbert implementation has huge edge effects * Connectivity on unconstrained sources: how to group the three orientations? * 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? * Multi-tapers? * 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) * Granger: * Crashes sometimes: improve stability * Re-write and optimize code * Add progress bar |
* Thresholding and stat tests for connectivity matrices * Connectivity on unconstrained sources: "Default signal extraction for volume grids should be the time series of the first principal component of the triplet signals after each has been zero-meaned" (SB) * Connect NxN display: * Graph on sensors: does not place the sensors correctly in space * Display as image: Add legend of the elements along X and Y axis * Display as time series: Display warning before trying to open too many signals * Optimize display: use surface() instead of line() for links? (as in figure_3d/PlotFibers) * Time-resolved correlation/coherence: Display as time bands * Weighted Phase Lag Index (WPLI) * Coherence: Average cross-spectra instead of concatenating epochs (to avoid discontinuities)<<BR>>Explore inter-trial approaches (Esther refers to chronux toolbox) * Granger: Check for minimum time window (Esther: min around 500-1000 data points) |
Line 94: | Line 52: |
* Add p-values | |
Line 96: | Line 53: |
* Optimize code | |
Line 99: | Line 55: |
* 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) * 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 |
* Add warning when running of short windows (because of filters) |
Line 116: | Line 58: |
* Optimize pipeline editor speed: Opening the window and the showing menu "Add process" are slow | * Plugin manager: * Export all the software environment to a .zip file (brainstorm + all plugins) * Generate fully reproducible scripts, including all the interactive/graphical parts: * Saving all the interactive operations as process calls * Improving the pipeline editor to handle loops over data files or subjects * Keeping a better track of the provenance of all the data (History, uniform file names) * Add MNE-Python functions: * scikit-learn classifiers * https://neuroimage.usc.edu/forums/t/ica-on-very-long-eeg/23556/4 * https://neuroimage.usc.edu/forums/t/best-way-to-export-to-mne-python/12704/3 * Reproduce other tutorials / examples * Point-spread functions (PSFs) and cross-talk functions: https://mne.tools/stable/auto_examples/inverse/plot_psf_ctf_vertices.html#sphx-glr-auto-examples-inverse-plot-psf-ctf-vertices-py * Spatial resolution metrics in source space:<<BR>>https://mne.tools/stable/auto_examples/inverse/plot_resolution_metrics.html#sphx-glr-auto-examples-inverse-plot-resolution-metrics-py * Change the graphic renderer from Matlab * Add FieldTrip functions: * ft_sourceanalysis: * Check noise covariance * Check all the options of all the methods * Single trial reconstructions + noise covariance? * Filters?? http://www.fieldtriptoolbox.org/example/common_filters_in_beamforming * Beamformers: Save ftSource.avg.mom <<BR>>http://www.fieldtriptoolbox.org/workshop/meg-uk-2015/fieldtrip-beamformer-demo * http://www.natmeg.se/ft_beamformer/beamformer.html * http://www.fieldtriptoolbox.org/tutorial/beamformingextended * Baseline? Two inputs? * ft_prepare_heamodel: Add support from BEM surfaces from the Brainstorm database * Freqanalysis: ITC * ft_volumereslice: http://www.fieldtriptoolbox.org/faq/how_change_mri_orientation_size_fov * ft_freqanalysis * ft_combineplanar * Optimization: * Use CUDA for speeding up some operations (filtering, wavelets, etc) * Use Matlab Coder to optimize: Wavelets, bandpass filter, sinusoid removal * Pipeline editor: * Bug: After "convert to continuous", the time of the following processes should change * Add loops over subjects/conditions/trial groups * Events: Allow selection from a drop-down list (similar to option "channelname" in panel_process_selection) * ITC: Inter-trial coherence (see MNE reports for group tutorial)<<BR>>http://www.sciencedirect.com/science/article/pii/S1053811916304232 |
Line 119: | Line 97: |
* Add Alex's suggestions: https://neuroimage.usc.edu/forums/t/ica-on-very-long-eeg/23556/4 * Add methods: SOBI, Fastica, AMICA/CUDICA/CUDAAMICA (recommended by S Makeig) * Why doesn't the ICA process converge when using 25 components in the EEG tutorial? * Add an option to resample the signals before computing the ICA decomposition |
|
Line 120: | Line 102: |
* Export IC time series (and then compute their spectrum): solves the problem above | |
Line 121: | Line 104: |
* Add methods: SOBI, Fastica, AMICA/CUDICA (recommended by S Makeig) | |
Line 123: | Line 105: |
* 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 |
|
Line 129: | Line 106: |
* Use Matlab Coder to optimize some processes: Wavelets, bandpass filter, sinusoid removal * Allow processes in Python and Java |
* EEGLAB recommends ICA + trial rejection + ICA again: Impossible right now with Brainstorm<<BR>>(http://sccn.ucsd.edu/wiki/Chapter_09:_Decomposing_Data_Using_ICA) * ICA+machine learning: https://www.ncbi.nlm.nih.gov/pubmed/28497769 * Automated artifact rejection: https://arxiv.org/abs/1612.08194 * Use EYE-EEG: EEGLAB toolbox for eye-tracker guided ICA (Olaf Dimigen): http://www2.hu-berlin.de/eyetracking-eeg/ |
Line 133: | Line 112: |
* Show where the attenuation is projected:<<BR>>(sum(IK,2)-sum(SSP(k,:)*IK,2)./sum(IK,2) * Bandpass: * 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) * Allow running on source files attached to continuous files (needs a lot of rewriting) |
|
Line 147: | Line 113: |
* Band-limited power envelope * Reports: * Save as HTML / PDF * Pipeline editor: * Add loops over subjects/conditions/trial groups |
|
Line 153: | Line 114: |
* Induced calculation: Avg(Power(TF(trials - Avg(Trials)))): <<BR>>Add option "Remove evoked response from each trial" * Standardize using: diff before calculation + cumsum (checkbox "flatten data") * Frequency bands: extended syntax (ex: [2 3 4], 10:5:90, ...) * Display logs as negative * 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 |
* Optimization: bst_timefreq (around l.136), remove evoked in source space: Average should be computed in sensor space instead of source space (requested by Dimitrios) * Short-time Fourier transform: http://www.mikexcohen.com/lectures.html |
Line 164: | Line 117: |
* 3D figures: Colormaps with "log" option doesn't work * Extend clusters tab to display of TF to overlay TF signals (Svet) * TF on scouts: Add progress bar when extracting all the scouts time series (can be long) * Artifact detection: * Artifact rejection like SPM: if bad in 20%, bad everywhere * Test difference between adjacent samples * Allow the detection on differences of signals (bipolar montages) * 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 * Resample continuous files * 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) * Use field process field "Group" to separate Input/Processing/Output options * Use new Matlab functions: movmean, movsum, movmedian, movmax, movmin, movvar, movstd == Database == * Sort files by comment * MEG protocols: More flexible organization of the database; sub-conditions to allow different runs X different conditions. * 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) == 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/ |
* 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) * Bug when computing TF on constrained and unconstrained scouts at the same time (in mixed head models for instance): uses only the constrained information and doesn't sum the 3 orientations for the unconstrained regions. |
Line 213: | Line 123: |
* Mixed head models: * Project to templates (scouts or source maps) * Create scout form maximum doesn't work (menu Sources > Max value) * Display in MRI doesn't work * Smooth display: do not smooth subcortical structures * Export as .nii volume: doesn't work |
* Unconstrained sources: * Unconstrained to flat: Default PCA for stat and connectivity? * Process "Scouts time series": Add PCA option (replace isnorm with radio PCA/Norm) * Reproduce results in "Simultaneous human intracerebral stimulation and HD-EEG, ground-truth for source localization methods": https://www.nature.com/articles/s41597-020-0467-x * eLORETA instead of sLORETA? * https://neuroimage.usc.edu/forums/t/compute-eeg-sources-with-sloreta/13425/6 * "eLORETA algorithm is available in the MEG/EEG Toolbox of Hamburg (METH)": https://www.biorxiv.org/content/biorxiv/early/2019/10/17/809285.full.pdf * https://github.com/brainstorm-tools/brainstorm3/issues/114 * Sensitivity maps: https://mne.tools/stable/auto_examples/forward/plot_forward_sensitivity_maps.html * Point-spread and cross-talk functions (code in MNE-Python): * https://www.biorxiv.org/content/biorxiv/early/2019/06/18/672956.full.pdf * https://github.com/olafhauk/EEGMEGResolutionAtlas |
Line 220: | Line 137: |
* Project individual dipoles files on a template | |
Line 221: | Line 139: |
* Read easily dipole coordinates: Click on one selects it and open the panel Get coordinates * Panel Get coordinates: Add button "find maximum" * 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 |
* Project sources: Very poor algorithm to project sub-cortical regions and cerebellum * Mixed head models: Bug when displaying interpolated in MRI viewer * Maximum: * Menu Sources > Maximum value: Doesn't work with volume or mixed head models * Panel Get coordinates: Add button "find maximum" * Sources on surface: Display peak regions over time (time = color) => A.Gramfort * BEM single sphere: Get implementation from MNE |
Line 234: | Line 147: |
* Test volume sources with all the subsequent processes (timefreq, stat...) | |
Line 237: | Line 149: |
* 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 * 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 * Menu Sources > Simulate recordings: * Do not close the 3D figures after generating a new file * Add a process equivalent to this menu |
* Add eyes models to attract eye activity * Display spectrum scouts (PSD plots when clicking on "Display scouts" on PSD/full cortex) |
Line 263: | Line 153: |
* MNI coordinates: Extend to non FreeSurfer volumes (BrainSuite volumes that are not 256x256x256) * Project all sub-cortical structures to default anatomy (check code from Denis S) * Add cerebellum to default model generated with "Import FS anatomy" * Import MRIs with different resolutions: re-interpolate automatically * Edit fiducials: Replace 6 text boxes with 1 for easy copy-paste (see fiducials.m) * Warping: Scale option has to be fixed, it is currently very unstable |
* MRI segmentation: * Start BrainSuite * Start FreeSurfer * SimNIBS: Replace HEADRECO with CHARM (headreco will be removed in SimNIBS 4) * FastSurfer: https://deep-mi.org/research/fastsurfer/ * MNI normalization: More options: * DARTEL / SHOOT * BrainSuite (wait for Anand) * MRI Viewer: * Pan in zoomed view (shift + click + move?) * Zoom in/out with mouse (shift + scroll?) * Ruler tool to measure distances * Display scouts as additional volumes * Render surface envelope in the MRI as a thin line instead of the full interpolation matrix<<BR>>Or use inpolyhedron to get a surface mask and then erode it to get the volume envelope * Surface>Volume interpolation: Use '''spm_mesh_to_grid''' instead of tess_tri_interp * Atlas switch in 3D MRI figures * ICBM152 update: * Process with FreeSurfer 7.1 + add FS atlases (Brainnettome, Schaeffer, HCP...) * Add volume atlases (+ reimport ASEG as volatlas) * Add facemask => Use for defacing with any MNI registration * Add T2? * BrainSuite: * Use same colors for left and right for anatomical atlases * Use for volume coregistration (rigid / non-rigid) * USCBrain: Add default electrodes positions * Remove BrainSuite1 when not needed anymore * Templates for different ages: * Pediatric head atlases: https://www.pedeheadmod.net/pediatric-head-atlases-v1-2/ * https://iopscience.iop.org/article/10.1088/2057-1976/ab4c76 * https://www.biorxiv.org/content/biorxiv/early/2020/02/09/2020.02.07.939447.full.pdf * John Richards: https://www.nitrc.org/frs/?group_id=1361 * Neurodev database: https://jerlab.sc.edu/projects/neurodevelopmental-mri-database/ |
Line 271: | Line 191: |
* 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 |
* Project from one hemisphere to the other using registered spheres/squares (http://neuroimage.usc.edu/forums/t/how-to-create-mirror-roi-in-the-other-hemisphere/5910/8) * Parcellating volume grids: scikit-learn.cluster.Ward * Geodesic distance calculations:<<BR>>https://www.mathworks.com/matlabcentral/fileexchange/6110-toolbox-fast-marching |
Line 283: | Line 196: |
* Co-register MRI and CT for electrodes marking in the MRI Viewer * Import/export electrodes positions in MNI/SCS/MRI coordinates * Display SEEG+ECOG contacts at the same time * Problem of difference between RAS and TkRegRAS: http://neuroimage.usc.edu/forums/showthread.php?1958-SEEG-electrodes-and-subject-s-anatomy-are-not-alligned |
* Contact positions: Import / set / detect * New option: Align on none|inner|cortex to replace ECOG-mid * Project contact positions across subjects or templates (Marcel) * Create clusters from anatomical labels: * Identify contacts in a given anatomical region (volume scout, surface mesh, or label in a volume atlas) / allow extracting the signals from all the contacts in an ROI * Automatic segmentation of CT: * GARDEL: http://meg.univ-amu.fr/wiki/GARDEL:presentation * SEEG DEETO Arnulfo 2015: https://bmcbioinformatics.biomedcentral.com/articles/10.1186/s12859-015-0511-6 * Used routinely at Niguarda Hospital + other hospitals worldwide, reliable tool. * To be used with SEEG-assistant/3DSlicer: https://bmcbioinformatics.biomedcentral.com/articles/10.1186/s12859-017-1545-8 * ECOG Centracchio 2021: https://link.springer.com/content/pdf/10.1007/s11548-021-02325-0.pdf * Classifier on thresholded CT: https://github.com/Jcentracchio/Automated-localization-of-ECoG-electrodes-in-CT-volumes * SEEG Granados 2018 (no code shared): https://link.springer.com/content/pdf/10.1007/s11548-018-1740-8.pdf * ECOG: * Project and display contacts on cortex surface should consider the rigidity of the grids: Contacts cannot rotate, and distance between contacts should remain constant across runs * Method for contacts projection: https://pdfs.semanticscholar.org/f10d/6b899d851f3c4b115404298d7b997cf1d5ab.pdf * ECOG: Brain shift: When creating contact positions on a post-implantation image, the brain shift should be taken into account for creating images of the ECOG contacts on the pre-op brain => iELVis (http://ielvis.pbworks.com/w/page/116347253/FrontPage) * Display: * Bad channels: Contacts greyed out instead of ignored (Marcel) * Display time in H:M:S * Display curved SEEG electrodes * Detection CEEP stim artifacts: Use ImaGIN code ImaGIN_StimDetect |
Line 289: | Line 220: |
* ANOVA: Use LENA functions(?) | * Stat on connectivity? * Stat on unconstrained sources? * ANOVA: * Write panel similar to Process1 and Process2 |
Line 292: | Line 226: |
* Problem t-test on unconstrained sources: (convert to flat + Z-score) * FieldTrip implementation: * Add logic of bad channels individually per sensor instead of removing completely all the channels that are marked as bad in at least one trial * Use SurfStat: Impements interesting things, like an analytical cluster-based p-value correction (Random-field theory which is used in SPM) - Peter * PLS: Partial Least Squares * In Stat tab: Correction by temporal extension (display only if effect longer than a given input in ms) |
|
Line 300: | Line 228: |
* FieldTrip integration: * Import/Export continuous recordings and non-averaged trials. * Export trials with a trial definition: http://neuroimage.usc.edu/forums/showthread.php?2213 |
* BIDS import: * Read real fiducials (OMEGA) / transformation matrices: * https://groups.google.com/g/bids-discussion/c/BeyUeuNGl7I * https://github.com/bids-standard/bids-specification/issues/752#issuecomment-795880992 * Read associated empty room * BIDS export: * Add events tsv, channel tsv, EEG, iEEG * BIDS-Matlab? * Support for OpenJData / JNIfTI: https://github.com/brainstorm-tools/brainstorm3/issues/284 * DICOM converter: * Add dcm2nii (MRICron) * Add MRIConvert * SPM .mat/.dat: Fix the import of the EEG/SEEG coordinates |
Line 304: | Line 242: |
* 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 (now external files implies continuous recordings) * BST-BIN: Add compression * 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 |
* XDF: https://github.com/sccn/xdf * XLTEK: https://github.com/danielmhanover/OpenXLT * Persyst .lay: https://github.com/ieeg-portal/Persyst-Reader * Nervus .eeg: https://github.com/ieeg-portal/Nervus-Reader * Biopac .acq: https://github.com/ieeg-portal/Biopac-Reader * BCI2000 Input (via EEGLAB plugin) * 4D file format: * Use reader from MNE-Python: mne.io.read_raw_kit (skip 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 * The noise compensation is considered to be always applied on the recordings, not sure this assumption is always correct * 4D phantom tutorial (JM Badier?) * BST-BIN: Add compression to .bst |
Line 316: | Line 258: |
* Reference tutorials on Google scholar + ResearchGate * Cleaning threads on the forum * Add Help buttons and menus (in popups, dialog windows...) => Links to the website. * Finish existing tutorials: * EEG/Epilepsy: Rewrite scripts + update contents (with Geneva2015 walkthrough) * Dipoles * Group MEM/Epilepsy + Epilepsy tutorials * New tutorials: * MEG connectome * Scrambled faces (SPM/MNE-Python) * Coherence (cortico-muscular ?) * Intra-cranial recordings * Co-register MEG runs (Beth) * Missing in the introduction tutorials: * Volume scouts * Sources: Model evaluation (by simulating recordings) * Time-frequency: Description of "log freq scale" option * Modify a structure manually: Export to Matlab/Import from Matlab * File manipulation: file_short, file_fullpath, in_bst_*... * Description of all fields in MRI and surfaces * Script tutorials: ask what folder contains the tutorial datasets * Missing in tutorial "Export to SPM": Add section "Compare with Brainstorm" * Missing in page "Cite Brainstorm": Add all the methods used in the software |
* All tutorial datasets in BIDS (including introduction tutorials) * Count GitHub clones in the the download stats * Deface the MRIs of all the tutorials * Tutorial OMEGA/BIDS: * Update the organization of derivatives folder (same for ECOG tutorial) * Add review of literature for the resting state MEG * Download example datasets directly from the OMEGA repository * New tutorials: <<BR>> * Other public datasets: [[https://github.com/INCF/BIDS-examples/tree/bep008_meg|https://github.com/INCF/BIDS-examples/tree/bep008_meg/]] * EEG/research * FieldTrip ECOG tutorial: http://www.fieldtriptoolbox.org/tutorial/human_ecog * Reproduce tutorials from MNE-Python: https://martinos.org/mne/stable/tutorials.html * Cam-CAN database: https://camcan-archive.mrc-cbu.cam.ac.uk/dataaccess/<<BR>>(download new datasets, including maxfiltered files and manual fiducial placements) * MEG steady-state / high-gamma visual / frequency tagging * Reproduce results from "Simultaneous human intracerebral stimulation and HD-EEG, ground-truth for source localization methods": https://www.nature.com/articles/s41597-020-0467-x * Stand-alone ICA tutorial |
Line 341: | Line 276: |
* Screen capture: * Bug on Win8/Win10: doesn't capture the correct part of the screen * Window managers with fading effect: captures the top window |
|
Line 348: | Line 280: |
* (TF) Images are too far apart with EEG 20 channels * (time series) Sometimes the lines are not visible * (time series) Does not work when DC offset is not removed |
* (TF) Units are weird with % values * (TF) Difficult to navigate in frequencies: Scaling+changing frequency resets the scaling |
Line 354: | Line 285: |
* MacOS 10.14.5 (Mojave): * Toggle buttons do not show their status * Panel Record: Text is too large for text boxes |
|
Line 358: | Line 292: |
* Matlab bugs: * Interface looks small on screens with very high resolutions: Reduce the resolution * Out of memory errors on Win 32bits (restart Matlab) * Matlab 2014b bug with rmdir/movefile: Enter but never returns from the call * 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 * Change of default anatomy does not reset the interpolation matrices in all the subjects. * After projecting sources once from subject to default anat, the interpolation is saved and not updated. Interpolations need to be removed manually before projecting again on a new template. |
== Distributed computing == * Options from FieldTrip: * Loose collection of computers: https://github.com/fieldtrip/fieldtrip/tree/master/peer * Single multicore machine: https://github.com/fieldtrip/fieldtrip/tree/master/engine * Batch system: https://github.com/fieldtrip/fieldtrip/tree/master/qsub * Documentation: https://www.fieldtriptoolbox.org/faq/what_are_the_different_approaches_i_can_take_for_distributed_computing/ * PSOM: http://psom.simexp-lab.org/ |
Line 370: | Line 302: |
* Hide Java panels instead of deleting them | * Replace all calls to inpolyhd.m with inpolyhedron.m (10x faster) * Interface scaling: Rewrite class IconLoader to scale only once the icons at startup instead of at each request of an icon (might improve the speed of the rendering of the tree) * Processes with "radio" and "radio_line" options: Replace with "radio_label" and "radio_linelabel" |
Line 372: | Line 306: |
* 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 * 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 * Optimize MRI viewer with patch() instead of image() |
What's next
A roadmap to the future developments of Brainstorm.
Contents
Recordings
- Default montages for EEG (sensor selection)
- Sleep scoring wish list (Emily C):
- Configurable horizontal lines (for helping detecting visually some thresholds)
- Mouse ruler: Measure duration and amplitude by dragging the mouse.
- Automatic spindle detector
https://neuroimage.usc.edu/forums/t/page-overlap-while-reviewing-raw-file-a-way-to-set-to-0/11229/13
- RAW file viewer speed:
- Downsample before filtering? (attention to the filter design)
- Add parameter to make the visual downsampling more or less aggressive
- Pre-load next page of recordings
- Keep the filter specifications in memory instead of recomputing for every page
- MEG/EEG registration: Apply the same transformation to multiple runs
- Create heat maps: Maybe with matlab function heatmap?
BioSemi: Add menu "Convert naming system" to rename channels into 10-10 (A1=>FPz)
Interface
Add a warning when computing a forward model with > 100000 sources (check selection)
- Snapshot: Save as image / all figures (similar to Movie/all figure)
Generalize the use of the units (field .DisplayUnits): Rewrite processes to save the units correctly
- Colormaps:
- Allow brightness/contrast manipulations on the custom colormaps
- Global colormap max: Should get the maximum across all the open files
- Copy figures to clipboard (with the screencapture function)
Contact sheets & movies: use average of time windows instead of single instants, for each picture.
- Contact sheets: Allow explicit list of times in input (+ display as in MNE-Python with TS)
- Display CTF coils: Show discs instead of squares
- Progress bar: Add a "Cancel" button
- Error message: Add a link to report directly the bug on the forum
Reorganize menus (Dannie's suggestion):
Connectivity
- Thresholding and stat tests for connectivity matrices
- Connectivity on unconstrained sources: "Default signal extraction for volume grids should be the time series of the first principal component of the triplet signals after each has been zero-meaned" (SB)
- Connect NxN display:
- Graph on sensors: does not place the sensors correctly in space
- Display as image: Add legend of the elements along X and Y axis
- Display as time series: Display warning before trying to open too many signals
- Optimize display: use surface() instead of line() for links? (as in figure_3d/PlotFibers)
- Time-resolved correlation/coherence: Display as time bands
- Weighted Phase Lag Index (WPLI)
Coherence: Average cross-spectra instead of concatenating epochs (to avoid discontinuities)
Explore inter-trial approaches (Esther refers to chronux toolbox)- Granger: Check for minimum time window (Esther: min around 500-1000 data points)
- PLV:
- Remove evoked
- Add time integration
- Unconstrained sources
- Add warning when running of short windows (because of filters)
Processes
- Plugin manager:
- Export all the software environment to a .zip file (brainstorm + all plugins)
- Generate fully reproducible scripts, including all the interactive/graphical parts:
- Saving all the interactive operations as process calls
- Improving the pipeline editor to handle loops over data files or subjects
- Keeping a better track of the provenance of all the data (History, uniform file names)
- Add MNE-Python functions:
- scikit-learn classifiers
https://neuroimage.usc.edu/forums/t/ica-on-very-long-eeg/23556/4
https://neuroimage.usc.edu/forums/t/best-way-to-export-to-mne-python/12704/3
- Reproduce other tutorials / examples
Point-spread functions (PSFs) and cross-talk functions: https://mne.tools/stable/auto_examples/inverse/plot_psf_ctf_vertices.html#sphx-glr-auto-examples-inverse-plot-psf-ctf-vertices-py
Spatial resolution metrics in source space:
https://mne.tools/stable/auto_examples/inverse/plot_resolution_metrics.html#sphx-glr-auto-examples-inverse-plot-resolution-metrics-py- Change the graphic renderer from Matlab
Add FieldTrip functions:
- ft_sourceanalysis:
- Check noise covariance
- Check all the options of all the methods
- Single trial reconstructions + noise covariance?
Filters?? http://www.fieldtriptoolbox.org/example/common_filters_in_beamforming
Beamformers: Save ftSource.avg.mom
http://www.fieldtriptoolbox.org/workshop/meg-uk-2015/fieldtrip-beamformer-demohttp://www.fieldtriptoolbox.org/tutorial/beamformingextended
- Baseline? Two inputs?
- ft_prepare_heamodel: Add support from BEM surfaces from the Brainstorm database
- Freqanalysis: ITC
ft_volumereslice: http://www.fieldtriptoolbox.org/faq/how_change_mri_orientation_size_fov
- ft_freqanalysis
- ft_combineplanar
- ft_sourceanalysis:
- Optimization:
- Use CUDA for speeding up some operations (filtering, wavelets, etc)
- Use Matlab Coder to optimize: Wavelets, bandpass filter, sinusoid removal
- Pipeline editor:
- Bug: After "convert to continuous", the time of the following processes should change
- Add loops over subjects/conditions/trial groups
- Events: Allow selection from a drop-down list (similar to option "channelname" in panel_process_selection)
ITC: Inter-trial coherence (see MNE reports for group tutorial)
http://www.sciencedirect.com/science/article/pii/S1053811916304232- ICA:
Add Alex's suggestions: https://neuroimage.usc.edu/forums/t/ica-on-very-long-eeg/23556/4
- Add methods: SOBI, Fastica, AMICA/CUDICA/CUDAAMICA (recommended by S Makeig)
- Why doesn't the ICA process converge when using 25 components in the EEG tutorial?
- Add an option to resample the signals before computing the ICA decomposition
- 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.0030135Dimension 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- 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)ICA+machine learning: https://www.ncbi.nlm.nih.gov/pubmed/28497769
Automated artifact rejection: https://arxiv.org/abs/1612.08194
Use EYE-EEG: EEGLAB toolbox for eye-tracker guided ICA (Olaf Dimigen): http://www2.hu-berlin.de/eyetracking-eeg/
- SSP:
Display warning if changing the ChannelFlag while there is a Projector applied
Remove line noise: http://www.nitrc.org/projects/cleanline
- Time-frequency:
- Optimization: bst_timefreq (around l.136), remove evoked in source space: Average should be computed in sensor space instead of source space (requested by Dimitrios)
Short-time Fourier transform: http://www.mikexcohen.com/lectures.html
- 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.
- 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)
- Bug when computing TF on constrained and unconstrained scouts at the same time (in mixed head models for instance): uses only the constrained information and doesn't sum the 3 orientations for the unconstrained regions.
Source modeling
- Unconstrained sources:
- Unconstrained to flat: Default PCA for stat and connectivity?
- Process "Scouts time series": Add PCA option (replace isnorm with radio PCA/Norm)
Reproduce results in "Simultaneous human intracerebral stimulation and HD-EEG, ground-truth for source localization methods": https://www.nature.com/articles/s41597-020-0467-x
- eLORETA instead of sLORETA?
https://neuroimage.usc.edu/forums/t/compute-eeg-sources-with-sloreta/13425/6
"eLORETA algorithm is available in the MEG/EEG Toolbox of Hamburg (METH)": https://www.biorxiv.org/content/biorxiv/early/2019/10/17/809285.full.pdf
Sensitivity maps: https://mne.tools/stable/auto_examples/forward/plot_forward_sensitivity_maps.html
- Point-spread and cross-talk functions (code in MNE-Python):
- Dipoles:
- Project individual dipoles files on a template
- panel_dipoles: Doesn't work with multiple figures
- Project sources: Very poor algorithm to project sub-cortical regions and cerebellum
- Mixed head models: Bug when displaying interpolated in MRI viewer
- Maximum:
Menu Sources > Maximum value: Doesn't work with volume or mixed head models
- Panel Get coordinates: Add button "find maximum"
Sources on surface: Display peak regions over time (time = color) => A.Gramfort
- BEM single sphere: Get implementation from MNE
- Volume grid:
- Optimize: 3D display (better than 9x9 cubes)
- Optimize: vol_dilate (with 26 neighbors)
- Add eyes models to attract eye activity
- Display spectrum scouts (PSD plots when clicking on "Display scouts" on PSD/full cortex)
Anatomy
- MRI segmentation:
Start BrainSuite
Start FreeSurfer
- SimNIBS: Replace HEADRECO with CHARM (headreco will be removed in SimNIBS 4)
FastSurfer: https://deep-mi.org/research/fastsurfer/
- MNI normalization: More options:
- DARTEL / SHOOT
BrainSuite (wait for Anand)
- MRI Viewer:
- Pan in zoomed view (shift + click + move?)
- Zoom in/out with mouse (shift + scroll?)
- Ruler tool to measure distances
- Display scouts as additional volumes
Render surface envelope in the MRI as a thin line instead of the full interpolation matrix
Or use inpolyhedron to get a surface mask and then erode it to get the volume envelopeSurface>Volume interpolation: Use spm_mesh_to_grid instead of tess_tri_interp
- Atlas switch in 3D MRI figures
- ICBM152 update:
Process with FreeSurfer 7.1 + add FS atlases (Brainnettome, Schaeffer, HCP...)
- Add volume atlases (+ reimport ASEG as volatlas)
Add facemask => Use for defacing with any MNI registration
- Add T2?
BrainSuite:
- Use same colors for left and right for anatomical atlases
- Use for volume coregistration (rigid / non-rigid)
- USCBrain: Add default electrodes positions
Remove BrainSuite1 when not needed anymore
- Templates for different ages:
Pediatric head atlases: https://www.pedeheadmod.net/pediatric-head-atlases-v1-2/
https://www.biorxiv.org/content/biorxiv/early/2020/02/09/2020.02.07.939447.full.pdf
John Richards: https://www.nitrc.org/frs/?group_id=1361
Neurodev database: https://jerlab.sc.edu/projects/neurodevelopmental-mri-database/
- Scouts:
- Display edges in the middle of the faces instead of the vertices
Project from one hemisphere to the other using registered spheres/squares (http://neuroimage.usc.edu/forums/t/how-to-create-mirror-roi-in-the-other-hemisphere/5910/8)
- Parcellating volume grids: scikit-learn.cluster.Ward
Geodesic distance calculations:
https://www.mathworks.com/matlabcentral/fileexchange/6110-toolbox-fast-marching
ECOG/SEEG
- Contact positions: Import / set / detect
- New option: Align on none|inner|cortex to replace ECOG-mid
- Project contact positions across subjects or templates (Marcel)
- Create clusters from anatomical labels:
- Identify contacts in a given anatomical region (volume scout, surface mesh, or label in a volume atlas) / allow extracting the signals from all the contacts in an ROI
- Automatic segmentation of CT:
SEEG DEETO Arnulfo 2015: https://bmcbioinformatics.biomedcentral.com/articles/10.1186/s12859-015-0511-6
- Used routinely at Niguarda Hospital + other hospitals worldwide, reliable tool.
To be used with SEEG-assistant/3DSlicer: https://bmcbioinformatics.biomedcentral.com/articles/10.1186/s12859-017-1545-8
ECOG Centracchio 2021: https://link.springer.com/content/pdf/10.1007/s11548-021-02325-0.pdf
Classifier on thresholded CT: https://github.com/Jcentracchio/Automated-localization-of-ECoG-electrodes-in-CT-volumes
SEEG Granados 2018 (no code shared): https://link.springer.com/content/pdf/10.1007/s11548-018-1740-8.pdf
- ECOG:
- Project and display contacts on cortex surface should consider the rigidity of the grids: Contacts cannot rotate, and distance between contacts should remain constant across runs
Method for contacts projection: https://pdfs.semanticscholar.org/f10d/6b899d851f3c4b115404298d7b997cf1d5ab.pdf
ECOG: Brain shift: When creating contact positions on a post-implantation image, the brain shift should be taken into account for creating images of the ECOG contacts on the pre-op brain => iELVis (http://ielvis.pbworks.com/w/page/116347253/FrontPage)
- Display:
- Bad channels: Contacts greyed out instead of ignored (Marcel)
- Display time in H:M:S
- Display curved SEEG electrodes
Detection CEEP stim artifacts: Use ImaGIN code ImaGIN_StimDetect
Statistics
- Stat on connectivity?
- Stat on unconstrained sources?
- ANOVA:
- Write panel similar to Process1 and Process2
- 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
Input / output
- BIDS import:
- Read real fiducials (OMEGA) / transformation matrices:
- Read associated empty room
- BIDS export:
- Add events tsv, channel tsv, EEG, iEEG
- BIDS-Matlab?
Support for OpenJData / JNIfTI: https://github.com/brainstorm-tools/brainstorm3/issues/284
- DICOM converter:
- Add dcm2nii (MRICron)
- Add MRIConvert
- SPM .mat/.dat: Fix the import of the EEG/SEEG coordinates
- EEG File formats:
Persyst .lay: https://github.com/ieeg-portal/Persyst-Reader
Nervus .eeg: https://github.com/ieeg-portal/Nervus-Reader
Biopac .acq: https://github.com/ieeg-portal/Biopac-Reader
- BCI2000 Input (via EEGLAB plugin)
- 4D file format:
- Use reader from MNE-Python: mne.io.read_raw_kit (skip 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
- The noise compensation is considered to be always applied on the recordings, not sure this assumption is always correct
- 4D phantom tutorial (JM Badier?)
- BST-BIN: Add compression to .bst
Distribution & documentation
- All tutorial datasets in BIDS (including introduction tutorials)
Count GitHub clones in the the download stats
- Deface the MRIs of all the tutorials
- Tutorial OMEGA/BIDS:
- Update the organization of derivatives folder (same for ECOG tutorial)
- Add review of literature for the resting state MEG
- Download example datasets directly from the OMEGA repository
New tutorials:
Other public datasets: https://github.com/INCF/BIDS-examples/tree/bep008_meg/
- EEG/research
FieldTrip ECOG tutorial: http://www.fieldtriptoolbox.org/tutorial/human_ecog
Reproduce tutorials from MNE-Python: https://martinos.org/mne/stable/tutorials.html
Cam-CAN database: https://camcan-archive.mrc-cbu.cam.ac.uk/dataaccess/<<BR>>(download new datasets, including maxfiltered files and manual fiducial placements)
- MEG steady-state / high-gamma visual / frequency tagging
Reproduce results from "Simultaneous human intracerebral stimulation and HD-EEG, ground-truth for source localization methods": https://www.nature.com/articles/s41597-020-0467-x
- Stand-alone ICA tutorial
Current bugs
- 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 10.14.5 (Mojave):
- Toggle buttons do not show their status
- Panel Record: Text is too large for text boxes
- 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
Distributed computing
Options from FieldTrip:
Loose collection of computers: https://github.com/fieldtrip/fieldtrip/tree/master/peer
Single multicore machine: https://github.com/fieldtrip/fieldtrip/tree/master/engine
Batch system: https://github.com/fieldtrip/fieldtrip/tree/master/qsub
Documentation: https://www.fieldtriptoolbox.org/faq/what_are_the_different_approaches_i_can_take_for_distributed_computing/
Geeky programming details
- Replace all calls to inpolyhd.m with inpolyhedron.m (10x faster)
Interface scaling: Rewrite class IconLoader to scale only once the icons at startup instead of at each request of an icon (might improve the speed of the rendering of the tree)
- Processes with "radio" and "radio_line" options: Replace with "radio_label" and "radio_linelabel"
- Interpolations: Use scatteredInterpolant, griddedInterpolant, triangulation.nearestNeighbor (2014b)