Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
development:realtime [2013/04/03 16:01] arjen [Publications using FieldTrip Buffer] |
development:realtime [2018/03/28 14:09] (current) robert [General tips and tricks] |
||
---|---|---|---|
Line 3: | Line 3: | ||
====== Real-time access to neurophysiological data ====== | ====== Real-time access to neurophysiological data ====== | ||
- | A recent development in the FieldTrip project is that we started using and extending it for real-time data analysis, feature extraction and classification. Besides data preprocessing, feature extraction and classification, which are needed for Brain-Computer Interface (BCI) and neurofeedback applications, we have added functionality for real-time processing of neuroimaging data in MATLAB in general using a common interface to the data. | + | Although the FieldTrip toolbox is primarily developed for offline analysis, you can also use it for real-time data analysis, feature extraction and classification. To implement Brain-Computer Interface (BCI) and neurofeedback applications, the toolbox includes functionality for real-time processing of all sorts of neuroimaging data (including EEG, MEG, LFP, ECoG, iEEG, NIRS, fMRI) using a common interface to all types of data. |
- | This page is part of the documentation series of the Fieldtrip buffer for realtime aquisition. The FieldTrip buffer is a standard that defines a central hub (the [[development:realtime|FieldTrip buffer]]) that facilitates realtime exchange of neurophysiological data. The documentation is organized in four main sections, being: | + | This page is part of the documentation series of the Fieldtrip buffer for realtime aquisition. The FieldTrip buffer is a standard that defines a central hub (the [[development:realtime|FieldTrip buffer]]) that facilitates realtime exchange of neurophysiological data. The documentation is organized in five main sections, being: |
- description and general [[development:realtime:buffer overview|overview of the buffer]], | - description and general [[development:realtime:buffer overview|overview of the buffer]], | ||
- definition of the [[development:realtime:buffer protocol]], | - definition of the [[development:realtime:buffer protocol]], | ||
- the [[development:realtime:reference implementation | reference implementation]], and | - the [[development:realtime:reference implementation | reference implementation]], and | ||
- specific [[development:realtime:implementation|implementations]] that interface with acquisition software, or software platforms. | - specific [[development:realtime:implementation|implementations]] that interface with acquisition software, or software platforms. | ||
+ | - the [[/getting_started/realtime|getting started]] documentation which takes you through the first steps of real-time data streaming and analysis in MATLAB | ||
The page [[development:realtime:scratchpad]] contains some loose ends that have no clear place. | The page [[development:realtime:scratchpad]] contains some loose ends that have no clear place. | ||
+ | |||
+ | ==== Frequently asked questions ==== | ||
+ | {{topic>faq +realtime &list}} | ||
+ | |||
+ | |||
+ | ==== Example scripts ==== | ||
+ | {{topic>example +realtime &list}} | ||
Line 20: | Line 28: | ||
* Are you having performance problems? Maybe you can initially try to reduce the number of channels or the sample rate, and check whether the program logic is right. | * Are you having performance problems? Maybe you can initially try to reduce the number of channels or the sample rate, and check whether the program logic is right. | ||
* How much data are you trying to move? If for example you want to write to a buffer on a remote machine, you need to be aware of the physical limits of the network connection. | * How much data are you trying to move? If for example you want to write to a buffer on a remote machine, you need to be aware of the physical limits of the network connection. | ||
- | * You can try moving the actual buffer to another machine, and you do not need to have the buffer attached to a Matlab session (try using ''demo_buffer''). | + | * You can try moving the actual buffer to another machine, and you do not need to have the buffer attached to a Matlab session (try using the ''buffer'' application that you will find in fieldtrip/realtime/bin). |
* You can try to report and compare the wall clock time with the sample time. Here, wall clock time refers to the real time your computer has run since you started the acquisition loop, while sample time is given by the amount of data processed so far, divided by your sampling frequency. These two numbers should ideally be the same or have a small constant offset, but they should not drift apart. Successive sample and clock times should also match your blocksize, that is, if you always read 500 samples at a time from a device, and your sampling rate is 1000 Hz, your measured clock time and calculated sample time should increase roughly by 0.5 seconds after each block. | * You can try to report and compare the wall clock time with the sample time. Here, wall clock time refers to the real time your computer has run since you started the acquisition loop, while sample time is given by the amount of data processed so far, divided by your sampling frequency. These two numbers should ideally be the same or have a small constant offset, but they should not drift apart. Successive sample and clock times should also match your blocksize, that is, if you always read 500 samples at a time from a device, and your sampling rate is 1000 Hz, your measured clock time and calculated sample time should increase roughly by 0.5 seconds after each block. | ||
- | ==== Frequently asked questions ==== | + | ==== Ongoing development of the realtime interface ==== |
- | {{topic>faq +realtime &list}} | + | {{topic>realtime +development &list}} |
- | + | ||
- | + | ||
- | ==== Tutorials ==== | + | |
- | {{topic>tutorial +realtime &list}} | + | |
- | + | ||
- | ==== Example scripts ==== | + | |
- | {{topic>example +realtime &list}} | + | |
- | + | ||
- | ==== Publications using FieldTrip Buffer ==== | + | |
- | + | ||
- | The following is a list of papers that made use of the FieldTrip buffer or referred to it. If you have published a paper which uses the FieldTrip buffer and which is not yet listed here, feel free to add it! Just click the edit button (under Page tools) at the top of this page. | + | |
- | + | ||
- | <inlinebib> | + | |
- | + | ||
- | @article{oostenveld2011fieldtrip, | + | |
- | title={FieldTrip: open source software for advanced analysis of MEG, EEG, and invasive electrophysiological data}, | + | |
- | author={Oostenveld, R. and Fries, P. and Maris, E. and Schoffelen, J-M.}, | + | |
- | journal={Computational intelligence and neuroscience}, | + | |
- | volume={2011}, | + | |
- | pages={1}, | + | |
- | year={2011}, | + | |
- | publisher={Hindawi Publishing Corp.} | + | |
- | } | + | |
- | + | ||
- | @article{sudre2011rtmeg, | + | |
- | title={rtMEG: a real-time software interface for magnetoencephalography}, | + | |
- | author={Sudre, G. and Parkkonen, L. and Bock, E. and Baillet, S. and Wang, W. and Weber, D. J.}, | + | |
- | journal={Computational intelligence and neuroscience}, | + | |
- | volume={2011}, | + | |
- | pages={11}, | + | |
- | year={2011}, | + | |
- | publisher={Hindawi Publishing Corp.} | + | |
- | } | + | |
- | + | ||
- | @incollection{delorme2010matlab, | + | |
- | title={MATLAB-based tools for BCI research}, | + | |
- | author={Delorme, A. and Kothe, Ch. and Vankov, A. and Bigdely-Shamlo, N. and Oostenveld, R. and Zander, T. O. and Makeig, S.}, | + | |
- | booktitle={Brain-Computer Interfaces}, | + | |
- | pages={241--259}, | + | |
- | year={2010}, | + | |
- | publisher={Springer} | + | |
- | } | + | |
- | + | ||
- | <\inlinebib> | + | |
- | + | ||