Skip to content

Commit 0699a00

Browse files
cleanup, consistent formatting and wording
1 parent 840a698 commit 0699a00

File tree

15 files changed

+71
-68
lines changed

15 files changed

+71
-68
lines changed

development/meeting/20140402.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,4 +21,4 @@ tags: [meeting]
2121
- We discussed bug 2500.
2222
- We discussed bug 2516.
2323
- We briefly discussed how to deal with the e-mails that are left unanswered on the mailing list. All FT team members should reply occasionally (1 per week at least), to reflect that it's a team effort. Also we should give room to the outside-centre FT'ers to reply.
24-
- support for component data in source reconstruction functions: - dipolefitting and MNE should in principle be doable. - yet, the functions may become confused because of the mixed representation of the component data (in a freq/tlck structure). - identify which functions should support this, but currently don't do it well. - ensure that the data is unambiguous, i.e. only keep topo/topolabel and remove anything else.
24+
- support for component data in source reconstruction functions: - dipole fitting and MNE should in principle be doable. - yet, the functions may become confused because of the mixed representation of the component data (in a freq/tlck structure). - identify which functions should support this, but currently don't do it well. - ensure that the data is unambiguous, i.e. only keep topo/topolabel and remove anything else.

development/project/distributed.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ We may need to estimate the time and memory requirements of each process, potent
6666

6767
Robert: an automatic estimation and updating of requirements for subsequent jobs was built into peercellfun, but turned out not to be very robust. In qsubcellfun I therefore forced the correct specification onto the user instead of attempting to have smart defaults.
6868

69-
The benefit to different modules being run in parallel may vary. Memory/processor intensive scripts (fMRI normalisation) vs. hard disk intensive (DICOM to Nifti conversion) depending on the site specific architecture.
69+
The benefit to different modules being run in parallel may vary. Memory/processor intensive scripts (fMRI normalisation) vs. hard disk intensive (DICOM to NIFTI conversion) depending on the site specific architecture.
7070

7171
Similarly, small jobs would benefit from stacking (running a series of jobs on a single distributed node). That is implemented in qsubcellfun.
7272

development/project/testing_ft_vs_mne.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@ It is not clear for me when you have to define the option grid.inside and grid.o
187187

188188
## Minimum-norm estimate in FieldTrip using simulated data
189189

190-
Trying to understand the results above, we looked at the phantom data in detail. It turned out that the location of the phantom with respect to the sensor-array was quite eccentric. To get a better idea about whether the results are caused by a feature of the code, or by the strange alignment we simulate some phantom data, where the active dipole is in the centre of the helmet.
190+
Trying to understand the results above, we looked at the phantom data in detail. It turned out that the location of the phantom with respect to the sensor array was quite eccentric. To get a better idea about whether the results are caused by a feature of the code, or by the strange alignment we simulate some phantom data, where the active dipole is in the centre of the helmet.
191191

192192
cd ~jansch/matlab/toolboxes/fs2fieldtrip/
193193
load grad;

development/realtime/scratchpad.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ and in a get request?
114114
The chunks seem a logical extension of the header structure, as such it seems
115115
more logical to extend the GET and PUT commands with a GET_CHUNK and PUT_CHUNK,
116116
where the respective packet would contain the chunk type and length. Predefined
117-
chunks (such as Siemens, Nifti and CTF res4) can remain as they are, but would
117+
chunks (such as Siemens, NIfTI and CTF res4) can remain as they are, but would
118118
not be sent along with each GET_HDR. This removes the requirement to switch
119119
from the polling to the blocking-read operation as implemented with WAIT_DAT.
120120
See also the light-header proposal.

faq/plotting/headmodel_localspheres.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ redirect_from:
99

1010
# How can I visualize a localspheres volume conductor model?
1111

12-
Typically, one would use **[ft_plot_headmodel](/reference/plotting/ft_plot_headmodel)** for the visualization of a headmodel. This function will not allow you right away to visualize a localspheres headmodel in a meaningful way. The reason for this is that a meaningful interpretation of the localspheres headmodel is only possible in combination with a specification of the sensor-array that was used to construct the headmodel. Namely, in the specification of the headmodel, for each of the sensors a sphere has been specified that best describes the local surface of the boundary closest to that sensor. ft_plot_headmodel does not know anything about the sensors, and will not be able to plot an interpretable figure. The following snippet of code can be used to visualize the surface that is described by the localspheres headmodel. For this code to work it is assumed that you have the headmodel and corresponding sensor description (here named grad) in MATLAB working memory.
12+
Typically, one would use **[ft_plot_headmodel](/reference/plotting/ft_plot_headmodel)** for the visualization of a headmodel. This function will not allow you right away to visualize a localspheres headmodel in a meaningful way. The reason for this is that a meaningful interpretation of the localspheres headmodel is only possible in combination with a specification of the sensor array that was used to construct the headmodel. Namely, in the specification of the headmodel, for each of the sensors a sphere has been specified that best describes the local surface of the boundary closest to that sensor. ft_plot_headmodel does not know anything about the sensors, and will not be able to plot an interpretable figure. The following snippet of code can be used to visualize the surface that is described by the localspheres headmodel. For this code to work it is assumed that you have the headmodel and corresponding sensor description (here named grad) in MATLAB working memory.
1313

1414
[a,b] = match_str(headmodel.label, grad.label);
1515

faq/spectral/freqanalysis_foimismatchwavelet.md

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,16 +10,17 @@ redirect_from:
1010

1111
# Why does my output.freq not match my cfg.foi when using 'wavelet' (formerly 'wltconvol') in ft_freqanalysis?
1212

13-
Conceptually, a wavelet analysis is a time domain convolution of a signal with a set of wavelets, each of these being designed to capture some feature in the data. In neuroscience, we typically use Morlet-wavelets, which are designed to capture sine and cosine waves in the data. This is because a Morlet wavelet consists of a sine/cosine wave, tapered by a gaussian window. When doing a spectral decomposition, the goal typically is to assign the fluctuations in the signal to distinct frequency bands. Importantly, the (implicitly) required behavior of the spectral transformation is, that the power estimated at X Hz truly comes from signal fluctuations at X Hz., and not from signal fluctuations at Y Hz. (and Z Hz etc). This is the issue of spectral leakage, and a few signal processing tricks are needed to optimally control for this.
14-
In the context of wavelet analysis in FieldTrip and in order to minimize detrimental effects of (unpredictable spectral leakage), you need to keep 2 things in min
13+
Conceptually, a wavelet analysis is a time domain convolution of a signal with a set of wavelets, each of these being designed to capture some feature in the data. In neuroscience, we typically use Morlet-wavelets, which are designed to capture sine and cosine waves in the data. This is because a Morlet wavelet consists of a sine/cosine wave, tapered by a gaussian window. When doing a spectral decomposition, the goal typically is to assign the fluctuations in the signal to distinct frequency bands. Importantly, the (implicitly) required behavior of the spectral transformation is, that the power estimated at X Hz truly comes from signal fluctuations at X Hz, and not from signal fluctuations at Y Hz (and Z Hz, etc). This is the issue of spectral leakage, and a few signal processing tricks are needed to optimally control for this.
14+
15+
In the context of wavelet analysis in FieldTrip and in order to minimize detrimental effects of (unpredictable spectral leakage), you need to keep 2 things in mind:
1516

1617
- The length of the wavelet at frequency X should fit an integer number of cycles of the wavelet's frequency. If this is not the case, the wavelet becomes sensitive to other frequencies in the data as well, thus making the wavelet less specific to the wished-for frequency, and vulnerable to spectral leakage.
1718

18-
- The total length of the data (your trials) should yield a frequency resolution that captures the frequencies of your spectral decomposition (your cfg.foi). This is because in its implementation FieldTrip uses the trick "convolution in the time domain is equivalent to multiplication in the frequency domain". In other words, rather than convolving the tome domain signal with the wavelets of different frequencies, the Fourier representation data is multiplied with the Fourier representation of the wavelets (and the inverse fourier transform is computed to get to the time domain representation again). If there is a mismatch between the frequencies specified in cfg.foi, and the inherent frequency resolution of the data (given by the length T, i.e. the frequency resolution is 1/T), some implicit spectral interpolation is done, which is particularly vulnerable to spectral leakage effects.
19+
- The total length of the data (your trials) should yield a frequency resolution that captures the frequencies of your spectral decomposition (your `cfg.foi`). This is because in its implementation FieldTrip uses the trick "convolution in the time domain is equivalent to multiplication in the frequency domain". In other words, rather than convolving the tome domain signal with the wavelets of different frequencies, the Fourier representation data is multiplied with the Fourier representation of the wavelets (and the inverse fourier transform is computed to get to the time domain representation again). If there is a mismatch between the frequencies specified in `cfg.foi`, and the inherent frequency resolution of the data (given by the length T, i.e. the frequency resolution is 1/T), some implicit spectral interpolation is done, which is particularly vulnerable to spectral leakage effects.
1920

20-
So, to make a long story short: in order to protect the user against him/herself the new implementation in the specest-module checks for potential discrepancies, and corrects the cfg.foi, if needed. Therefore, if you wish for particular frequencies in your TFR, you need to think twic
21+
So to protect the user against him/herself, the new implementation in the specest-module checks for potential discrepancies, and corrects the `cfg.foi` if needed. Therefore, if you wish for particular frequencies in your TFR, you need to think twice:
2122

22-
- Is cfg.width an integer number, resulting in an integer number of cycles for each requested frequency?
23-
- Is the length of my data such, that the frequency resolution 1/T can capture all cfg.foi? This means, in other words, that cfg.foi/T should be integer numbers.
23+
- Is `cfg.width` an integer number, resulting in an integer number of cycles for each requested frequency?
24+
- Is the length of my data such, that the frequency resolution 1/T can capture all `cfg.foi`? This means, in other words, that `cfg.foi` divided by T should be integer numbers.
2425

25-
Hint: The length of the data can be influenced with the cfg.pad parameter.
26+
Hint: The length of the data can be influenced with the `cfg.pad` parameter.

tutorial.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ When adding or contributing to the tutorials please consider the [documentation
4343
- [Construct a headmodel for MEG source analysis](/tutorial/headmodel_meg)
4444
- [Construct a BEM headmodel for EEG source analysis](/tutorial/headmodel_eeg_bem)
4545
- [Construct a FEM headmodel for EEG source analysis](/tutorial/headmodel_eeg_fem)
46-
- [Construct a sourcemodel for MEG or EEG source analysis](/tutorial/sourcemodel)
46+
- [Creating a source model for MEG or EEG source analysis](/tutorial/sourcemodel)
4747
- [Localizing electrodes using a 3D-scanner](/tutorial/electrode)
4848
- [Localizing oscillatory sources in MEG data using a beamformer](/tutorial/beamformer)
4949
- [Beamforming oscillatory responses in combined MEG/EEG data](/workshop/natmeg2014/beamforming)

tutorial/connectivity/connectivity_sensor_source.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@ We now recompute the virtual channel time series, but now only for the dipole di
168168
#### Exercise 8
169169

170170
{% include markup/skyblue %}
171-
Rather than using a sourcemodel in the beamformer that consists of all three (x, y, z) directions, you can also have the beamformer compute the filter for only the optimal source orientation. This is implemented using the _cfg.lcmv.fixedori='yes'_ option.
171+
Rather than using a source model in the beamformer that consists of all three (x, y, z) directions, you can also have the beamformer compute the filter for only the optimal source orientation. This is implemented using the _cfg.lcmv.fixedori='yes'_ option.
172172

173173
Recompute the spatial filter for the optimal source orientation and using that spatial filter (a 1x151 vector) recompute the time series.
174174

tutorial/source/coregistration_opm.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -333,7 +333,7 @@ _Figure: Spatial topographies of the signals generated by the 3 HPI coils._
333333

334334
For the fitting the magnetic dipole positions, we will use a grid search as an initial scan over the whole volume, followed by a iterative non-linear optimization. The grid search is motivated by the fact that a non-linear search of the whole parameter space (i.e., volume of space covered by the helmet) might result in convergence to a local minimum.
335335

336-
The following creates a sourcemodel that consists of a regular grid of dipole positions that will be used for the initial grid search.
336+
The following creates a source model that consists of a regular grid of dipole positions that will be used for the initial grid search.
337337

338338
%% create a regular grid of dipole positions bounded by the helmet
339339
fieldlinebeta2 = ft_read_sens('fieldlinebeta2.mat'); % from fieldtrip/template/grad

tutorial/source/epilepsy.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ This tutorial describes how to perform a source localization on epilepsy data us
2020

2121
The tutorial covers data for 3 patients, all shared via our [download server](https://download.fieldtriptoolbox.org/tutorial/epilepsy/). The provided datasets have varying degrees of clinical complexity. The more complex cases are, of course, the ones most likely to be referred for MEG recordings prior to consideration for surgery.
2222

23-
For one of the patients, case 3, we provide a detailed line-by-line breakdown of the MATLAB code required to analyze the data. We outline the steps in obtaining the beamformer outputs, from anatomical coregistration right through to plotting source images. We note an important extra step that is required in computing the beamformer for data collected on an Neuromag/Elekta/MEGIN system compared to a CTF system. We also describe how to output the source images into NiFTI format for viewing in other software such as [MRIcro](https://www.mccauslandcenter.sc.edu/crnl/tools), and how to output source timeseries as a file which can be examined clinically alongside the original data in [AnyWave](http://meg.univ-amu.fr/wiki/AnyWave) data viewing software.
23+
For one of the patients, case 3, we provide a detailed line-by-line breakdown of the MATLAB code required to analyze the data. We outline the steps in obtaining the beamformer outputs, from anatomical coregistration right through to plotting source images. We note an important extra step that is required in computing the beamformer for data collected on an Neuromag/Elekta/MEGIN system compared to a CTF system. We also describe how to output the source images into NIfTI format for viewing in other software such as [MRIcro](https://www.mccauslandcenter.sc.edu/crnl/tools), and how to output source timeseries as a file which can be examined clinically alongside the original data in [AnyWave](http://meg.univ-amu.fr/wiki/AnyWave) data viewing software.
2424

2525
For patients 1 and 2, we simply provide a summary of the outputs and some other useful observations. These datasets can be analyzed by the reader in exactly the same way as case 3.
2626

0 commit comments

Comments
 (0)