Interface to the read_xxx functions

FieldTrip has a flexible way of supporting dataformats. It uses three wrapper functions that provide a common interface to all file formats: read_header, read_data and read_event. There are also still the old read_fcdc_xxx functions, but these are merely wrappers around the new functions and are only supplied for backward compatibility support.

These read_xxx functions detect the file format and subsequently will call the appropriate low-level function for each file format. Some of the low-level functions are written by ourselves, some are supplied by the manufacturers and some are obtained from other open source toolboxes.

The objective of supplying the low-level EEG and MEG reading functions as a seperate module/toolbox are to

  1. facilitate the reuse of the read_xxx functions in other open-source projects (e.g. EEGLAB, SPM)
  2. facilitate the implementation and support for new data formats, esp. for external users/contributors
  3. facilitate the implementation of advanced features (e.g. real-time acquisition)

A list of the data formats that are supported is given here. The low-level reading functions are combined in the fileio toolbox, which is released together with FieldTrip but can also be downloaded here as separate toolbox.

Features

The following features are implemented in the fileio module

  • the API for the functions is transparent to the data format
  • adding support for new file formats require only little change to the existing functions
  • the data is returned in a 2-D array (Nchans x Nsamples), or in a 3-D array (Ntrials x Nchans x Nsamples)
  • the header information is represented in a structure that is common to all data formats
  • the event information is represented in a structure that is common to all data formats



Other options that have been suggested, but that are not implemented yet are

  • supporting data in multiple files (i.e. an EEG session with a break in the acquisition)
  • storing the file identifier in the header (prevent fopen+fseek for reading each block)
  • downsampling on the fly, support for different sampling rates in one dataset
  • re-reference EEG data while reading in, and/or add the implicit reference channel
  • instead of specifying a refchan, use a complete linear projection matrix (c.f. LDR in neuroscan)

Definition of the function-calls (API)

The API allows for reading header information, event information, and blocks of data. The API consists of two parts: a clearly defined function call, and a clearly defined output of that function call.

hdr    = read_header(filename), this returns a structure with the header information
event  = read_event(filename), this returns a structure with the event information, (i.e. the triggers) 
dat    = read_data(filename, ...), this returns a 2-D or 3-D array with the data

The data-reading function has additional variable input arguments for selecting segments and channels.

The motivation for separating the reading into header/event/data is (among others) inspired by the CTF and by the BrainVision data formats. Based on the header, you want to decide how to approach reading the data, i.e. read everything for an average ERP, read an epoch for trial-based data, read a segment for continuous data. Based on the events (triggers and such), you want to decide which segments of data to read, i.e. read a pre/post-stimulus data segment around each trigger. These decisions are part of the FieldTrip/SPM/EEGLAB/enduser code.

Header format

In order to make the API transparent to the final application, the header structure by default only contains those elements that are common to all file types

  • sampling frequency
  • number of samples
  • number of trials
  • number of channels
  • channel labels

Additional header information that is present for only specific file formats is stored in a substructure (“orig”). An example header for a CTF MEG dataset looks like this

hdr = 
           Fs: 600                 % sampling rate in Hz
       nChans: 218                 % number of channels, in this case 151 channel MEG with some additional EEG 
     nSamples: 6000                % number of samples per trial, in this case each trial is 10 seconds long
  nSamplesPre: 0                   % baseline period in each trial
      nTrials: 49                  % number of trials
        label: {218x1 cell}        % channel labels 
         grad: [1x1 struct]        % structure with details on the position and orientation of the MEG sensors 
         orig: [1x1 struct]        % the original CTF header structure

Event format

The event structure allows for various events, that can be coded as numbers (trigger values) or as strings (annotations and trial classifications). Events have a location in the file (sample number) and may have a duration. In the end-user application, it should be easy to search for events of a particular type. Selected events should be used to fetch the data of interest from the file.

An example event structure for a CTF MEG dataset looks like this

>> event
event = 
1x577 struct array with fields:
    type
    sample
    value
    offset
    duration

>> event(1)   
ans = 
        type: 'trial'
      sample: 1
       value: []
      offset: 0
    duration: 6000

>> event(2)
ans = 
        type: 'backpanel trigger'
      sample: 1451
       value: 4
      offset: []
    duration: []

In case of events with duration that define trials event.sample is the first sample of a trial and event.offset is the offset of the trigger with respect to the trial. An offset of 0 means that the first sample of the trial corresponds to the trigger. A positive offset indicates that the first sample is later than the trigger, a negative offset indicates that the trial begins before the trigger.

Data format

The data is returned as a Nchans X Nsamples matrix (for continuous data), or a Nchans X Nsamples X Ntrials matrix (for trial based data).

Example use of the read_xxx functions

The following piece of code will read each trial in an trial-based dataset that has a trigger with value “1”

hdr   = read_header(filename);
event = read_event(filename);
trig1 = find(cell2mat({event.value})==1);
for i=1:length(trig1)
  dat(i,:,:) = read_data(filename, 'trial', trig1(i));
end

The following piece of code will read all trial with trigger value “1” all at once

hdr   = read_header(filename);
event = read_event(filename);
trig1 = find(cell2mat({event.value})==1);
dat   = read_data(filename, 'trial', trig1);

The following piece of code will read the first 10 seconds data from a continuous file

hdr = read_header(filename);
dat = read_data(filename, 'begsample', 1, 'endsample', 10*hdr.fsample);

The following piece of code will read a one-second segment of data from a continuous dataset around the first trigger with value “4”

hdr   = read_header(filename);
event = read_event(filename);
sel   = [];
for i=1:length(event)
  % test each event, we are looking for a trigger with value 4
  if isequal(event(i).type, 'trigger') && isequal(event(i).value, 4)
    sel = [sel; i];
  end
end
sel       = sel(1);                             % select only the first trigger that was found
begsample = event(sel(1)).sample - 0.3*hdr.Fs;  % select 300ms before the sample of the trigger
endsample = event(sel(1)).sample + 0.7*hdr.Fs;  % select 700ms after the sample of the trigger
dat       = read_data(filename, 'begsample', begsample, 'endsample', endsample);

Guidelines for adding support for other file formats

The read_data, read_header and read_event functions strongly depend on the filetype helper function. That function automatically determines the format of the file, for example by looking at the extension, by looking at the first few bytes of the file or any other caracteristic feature. So adding support for a new file format also requires that new fileformat to be added to the filetype function.

The filetype function is often called like this (e.g. in read_data):

var = filetype(filename)
if strcmp(var, something)
  % do something
elseif strcmp(var, something_else)
  % do something else
...

The reason for this is that filetype does the checks in one long if-elseif-elseif ladder, which makes it relatively slow . Therefore it is called only once to speed up read_data, and the type of the file is remembered in a variable. However, that does make it order sensitive: the first match in filetype will be the one returned. So for common file extensions like “*.dat” it can be problematic. The solution for identical file extensions is to have the most stringent check first (e.g. “extension is *.dat and header contains a few magic bytes”) followed by the less stringent check (“extension is *.dat”).

Note furthermore that you can use context, i.e. the simultaneous presence of multiple files. That is used for example in BrainAnalyzer, which usually has a set of three files (an ascii *.vhdr, another ascii *.vmrk and one binary file with extension dat, eeg or seg). The *.dat file in then easy to recognize because it is always accompanied by the others.

Recent changes to the code

2010-03-04 14:56  roboos

	* filetype.m, private/read_serial_event.m, private/write_serial_event.m, read_event.m,
	  write_event.m: moved the reading and writing over a serial connection to seperate
	  functions, changed from the original code by Christian to the code from Avgis

2010-03-04 10:50  roboos

	* read_sens.m: added some initial code for besa_elp, not yet finished

2010-02-24 08:30  roboos

	* private/read_16bit.c, private/read_16bit.m: moved from cvs to svn, these should be
	  included in the release version because of edf

2010-02-19 09:49  vlalit

	* private/loadcnt.m, private/read_ns_cnt.m, read_data.m, read_event.m, read_header.m:
	  Replaced the Neuroscan reader with a slightly modified latest version of the EEGLAB
	  reader. This should fix the bug reported on SPM mailing list by Muhammad Parvaz
	  (https://www.jiscmail.ac.uk/cgi-bin/wa.exe?A2=SPM;h6L9oA;20100210233342%2B0000)

2010-02-19 09:24  jansch

	* private/read_4d_hdr.m: updated to latest own version. no functional differences, some
	  cosmetic changes

2010-02-18 20:23  vlalit

	* private/read_eeglabheader.m: Fix for a bug I encountered. For some reason I have a sense
	  of deja-vu as if I have fixed this same bug once before.

2010-02-18 16:20  roboos

	* read_event.m: return an empty array if the fieldtrip buffer does not contain any events
	  (instead of error)

2010-02-18 16:19  roboos

	* private/read_yokogawa_header.m, private/yokogawa2grad.m: changed the labels of the
	  Yokogawa MEG channels according to the
	  suggestion by Tillmann Sander-Thoemmes: "use the abbreviated
	  description of the channel type as the label prefix, e.g., the axial
	  gradiometers would have the prefix AG, the reference magnetometers
	  would be RM, etc. These abbreviations are something that Yokogawa
	  users would recognize as the textual descriptions appear in the
	  Yokogawa software and the manual"

2010-02-18 13:02  marvger

	* private/buffer.mexmaci: fixed offset problem in rt_fileproxy

2010-02-18 10:19  roboos

	* private/read_plexon_ds.m: remember the filetype in the header (just like filename)
	  do not use filetype function to distinguish nex/plx/ddt, but only check for the extension
	  pass the begin and edn sample to read_plexon_nex (this should be a tremendous speed
	  increase!!!)

2010-02-18 10:18  roboos

	* private/read_4d_hdr.m: only changes in whitespace

2010-02-18 10:17  roboos

	* read_header.m: only give a "fake channel" warning once

2010-02-11 21:00  josdie

	* read_header.m: After discussion with Robert, hdr.labels field made a column vector for EGI
	  simple binary, EGI EGIS ave, and EGI EGIS session files.

2010-02-10 20:11  josdie

	* read_header.m: undid change just made of hdr.labels field being a column vector rather
	  than a row vector for EGI EGIS and EGI simple binary formats.

2010-02-10 19:41  josdie

	* read_header.m: For EGI simple binary format, deleted assumption that hdr.nSamplesPre must
	  be no less than one.
	  For EGI EGIS and EGI simple binary formats, the hdr.label changed to a column vector
	  rather than a row vector
	  as other parts of FT (or at least ft_appenddata.m) makes this assumption and were
	  crashing.

2010-02-10 19:30  josdie

	* private/read_sbin_data.m: For unsegmented data, no longer failing to respect the begsample
	  parameter when reading in data. Credit to Matt Mollison.

2010-02-10 19:24  josdie

	* read_event.m: For unsegmented simple binary files, event handling modified so that
	  simultaneous events are not lost. Credit to Matt Mollison.
	  For EGI EGIS average files with multiple subjects, the trial events are now prefixed "sub"
	  rather than just "s" to minimize confusion with
	  other naming conventions.

2010-02-10 19:13  josdie

	* private/read_sbin_events.m: For unsegmented data, preBaseline defaults to zero rather than
	  empty (no affect on the current code). More importantly, support for events implemented
	  for unsegmented data. Credit to Matt Mollison.

2010-02-10 19:07  josdie

	* private/read_sbin_header.m: For unsegmented data, preBaseline defaults to zero rather than
	  empty to avoid causing errors elsewhere in FT. Credit to Matt Mollison.

2010-02-10 17:01  roboos

	* private/read_besa_mul.m: incorporated the suggestions from Andrea

2010-02-09 08:12  roboos

	* private/read_stl.m, private/write_stl.m: added two files for reading and writing stereo
	  litography files (*.stl)

2010-02-08 13:31  roboos

	* private, private/apply_montage.m, private/buffer.m, private/buffer.mexa64,
	  private/buffer.mexglx, private/buffer.mexmac, private/buffer.mexmaci,
	  private/buffer.mexw32, private/convert_units.m, private/estimate_units.m,
	  private/getsubfield.m, private/hastoolbox.m, private/headcoordinates.m,
	  private/issubfield.m, private/keyval.m, private/match_str.m, private/pthreadVC2.dll,
	  private/rmsubfield.m, private/senslabel.m, private/senstype.m, private/setsubfield.m,
	  private/voltype.m: replaced the symlinks by svn file externals, should also work on
	  windows

2010-02-01 00:30  josdie

	* private/read_sbin_header.m: Fixed bug where not finding consistent baseline events for
	  purpose of deducing the baseline period when more than one event occurs at that baseline
	  sample.

2010-02-01 00:27  josdie

	* read_event.m: Fixed bug in reading events for EGI simple binary files such that samples
	  and offsets were incorrect.

2010-01-28 08:13  roboos

	* read_data.m: don't reshape the output data into [nchans nsamples ntrials] 3D array in case
	  ntrials=1, to prevent problematic (sparse output) behaviour in case nchans=1 and ntrials=1

2010-01-25 13:41  roboos

	* private/read_eeglabevent.m: fixed a problem with the trial offset (nSamplesPre) affecting
	  the offset of trigger/stimulus events
	  also add trial events (on top of the trigger events)

2010-01-19 11:00  roboos

	* filter_event.m, private/filter_event.m, read_event.m: moved filter_event to the public
	  section of fileio (for the documentation), and further clarified the documentation

2010-01-18 16:41  roboos

	* private/read_shm_data.m: first read the block details, then assign them to the persistent
	  variable

2010-01-14 19:24  roboos

	* private/read_shm_data.m, private/read_shm_header.m: fixed a bug in header caching (causing
	  the header not to be reread
	  for a new acquisition in the same session), changed a global variable
	  into persistent

2010-01-12 19:06  roboos

	* private/itab2grad.m: moved from cvs to svn

2010-01-12 15:21  sashae

	* private/read_neuroshare.m: added plexon_plx library for read_neuroshare

2010-01-09 13:19  roboos

	* write_event.m: 08.01.2010 A.Hadjipapas and Braam Dams, lines 252-268: changed
	  command, when writing to fcdc serial port, to avoid additional 'new
	  line' character in the serial port output. This character is produced
	  by default when using fprintf(statement) and leads to funny shaped
	  waveforms of the output.

2010-01-08 11:56  sashae

	* read_data.m, read_event.m, read_header.m, read_spike.m: implemented read_neuroshare, still
	  under development

2009-12-17 15:19  roboos

	* filetype.m: fixed bug in isdir workaround for real-time (thanks to Ingrid)

2009-12-17 07:40  roboos

	* private/read_shm_header.m: fixed bug: use the previous header if teh res4 file is not
	  re-read

2009-12-15 22:50  roboos

	* filetype.m: fixed silly typo (isany -> any)

2009-12-15 21:46  roboos

	* filetype.m, private/filetype_check_uri.m, private/read_shm_data.m,
	  private/read_shm_header.m: some small modifications to improve the handling of shared
	  memory for real-time CTF/MEG data

2009-12-15 16:50  roboos

	* private/read_24bit.mexa64: recompiled the mex file (thanks to Alexander Maye for pointing
	  out the problem)
	  MATLAB Version 7.5.0.338 (R2007b)
	  Operating System: Linux 2.6.18-92.el5

2009-12-15 10:39  roboos

	* private/read_shm_event.m: added ; to suppress online output

2009-12-09 17:05  roboos

	* private/read_yokogawa_event.m, read_event.m: added trigindx option in read_event and
	  read_yokogawa_event, to allow the user to specify non-standard trigger channels

2009-12-09 17:00  roboos

	* chantype.m, private/read_yokogawa_header.m, private/yokogawa2grad.m: multiple
	  modifications to get better support for the yokogawa system
	  channels are now labeled as {'1', '2', ...}

2009-12-09 12:50  roboos

	* chantype.m, private/read_yokogawa_header.m: changed the channel naming of the yokogawa160
	  system

2009-12-09 10:34  roboos

	* chantype.m, filetype.m, read_data.m, read_headshape.m: Implemented consistent handling
	  with the sample offset for neuromag_mne *.fif formats, it is now consistent with
	  read_header and with averaged files. For the continuous neuromag recorsding where saving
	  to disk starts later than actual acquisition, nSamplesPre is positive, indicating that the
	  first sample in the file (indexed as sample 1) has a positive time.
	  Completed the sypport of new yokogawa formats.

2009-12-09 05:01  josdie

	* private/read_eeglabdata.m: Added more informative error message. Fixed bug where files
	  using .set/.fdt dual file format read with time points and channels transposed.

2009-12-08 17:29  sashae

	* private/read_neuroshare.m: first implementation

2009-12-04 10:00  roboos

	* COPYING, README, chantype.m, filetype.m, flush_data.m, flush_event.m, flush_header.m,
	  private/ama2vol.m, private/appendevent.m, private/avw_hdr_make.m, private/avw_hdr_read.m,
	  private/avw_hdr_write.m, private/avw_img_read.m, private/avw_img_write.m,
	  private/bigendian.m, private/bti2grad.m, private/cstructdecode.m, private/ctf2grad.m,
	  private/fif2grad.m, private/filetype_check_extension.m, private/filetype_check_header.m,
	  private/filetype_check_uri.m, private/filter_event.m, private/littleendian.m,
	  private/loadama.m, private/mne2grad.m, private/mxDeserialize.m,
	  private/mxDeserialize.mexa64, private/mxDeserialize.mexmac, private/mxDeserialize.mexw32,
	  private/mxSerialize.m, private/mxSerialize.mexa64, private/mxSerialize.mexglx,
	  private/mxSerialize.mexmac, private/mxSerialize.mexw32, private/neuralynx_crc.m,
	  private/neuralynx_getheader.m, private/neuralynx_numrecords.m,
	  private/neuralynx_timestamp.m, private/np_read_splitted_fileinfo.m, private/np_readdata.m,
	  private/np_readfileinfo.m, private/np_readmarker.m, private/openbdf.m,
	  private/read_24bit.m, private/read_24bit.mexa64, private/read_24bit.mexglx,
	  private/read_24bit.mexmac, private/read_24bit.mexmaci, private/read_24bit.mexw32,
	  private/read_4d_hdr.m, private/read_asa.m, private/read_asa_bnd.m, private/read_asa_dip.m,
	  private/read_asa_elc.m, private/read_asa_mri.m, private/read_asa_msr.m,
	  private/read_asa_vol.m, private/read_besa_avr.m, private/read_besa_mul.m,
	  private/read_besa_pdg.m, private/read_besa_src.m, private/read_besa_swf.m,
	  private/read_besa_tfc.m, private/read_bham.m, private/read_biff.m,
	  private/read_biosemi_bdf.m, private/read_biosig_data.m, private/read_biosig_header.m,
	  private/read_brainvision_eeg.m, private/read_brainvision_marker.m,
	  private/read_brainvision_pos.m, private/read_brainvision_vhdr.m,
	  private/read_brainvision_vmrk.m, private/read_bti_ascii.m, private/read_bti_hs.m,
	  private/read_bti_m4d.m, private/read_bv_srf.m, private/read_ced_son.m,
	  private/read_combined_ds.m, private/read_ctf_ascii.m, private/read_ctf_cls.m,
	  private/read_ctf_coef.m, private/read_ctf_dat.m, private/read_ctf_hc.m,
	  private/read_ctf_hdm.m, private/read_ctf_meg4.m, private/read_ctf_mri.m,
	  private/read_ctf_mri4.m, private/read_ctf_res4.m, private/read_ctf_sens.m,
	  private/read_ctf_shape.m, private/read_ctf_shm.m, private/read_ctf_shm.mexa64,
	  private/read_ctf_shm.mexglx, private/read_ctf_shm.mexmaci, private/read_ctf_trigger.m,
	  private/read_curry.m, private/read_edf.m, private/read_eeglabdata.m,
	  private/read_eeglabevent.m, private/read_eeglabheader.m, private/read_egis_data.m,
	  private/read_egis_header.m, private/read_elec.m, private/read_fcdc_trl.m,
	  private/read_labview_dtlg.m, private/read_lay.m, private/read_mat.m,
	  private/read_micromed_trc.m, private/read_mpi_dap.m, private/read_mpi_ds.m,
	  private/read_neuralynx_bin.m, private/read_neuralynx_cds.m, private/read_neuralynx_dma.m,
	  private/read_neuralynx_ds.m, private/read_neuralynx_ncs.m, private/read_neuralynx_nev.m,
	  private/read_neuralynx_nse.m, private/read_neuralynx_nst.m, private/read_neuralynx_nts.m,
	  private/read_neuralynx_ntt.m, private/read_neuralynx_sdma.m, private/read_neuralynx_tsh.m,
	  private/read_neuralynx_tsl.m, private/read_neuralynx_ttl.m, private/read_nex_data.m,
	  private/read_nex_event.m, private/read_nex_header.m, private/read_nexstim_event.m,
	  private/read_nexstim_nxe.m, private/read_nimh_cortex.m, private/read_nmc_archive_k_data.m,
	  private/read_nmc_archive_k_event.m, private/read_nmc_archive_k_hdr.m,
	  private/read_ns_avg.m, private/read_ns_cnt.m, private/read_ns_eeg.m,
	  private/read_ns_hdr.m, private/read_off.m, private/read_plexon_ddt.m,
	  private/read_plexon_ds.m, private/read_plexon_nex.m, private/read_plexon_plx.m,
	  private/read_polhemus_fil.m, private/read_sbin_data.m, private/read_sbin_events.m,
	  private/read_sbin_header.m, private/read_shm_data.m, private/read_shm_event.m,
	  private/read_shm_header.m, private/read_spike6mat_data.m, private/read_spike6mat_header.m,
	  private/read_spmeeg_data.m, private/read_spmeeg_event.m, private/read_spmeeg_header.m,
	  private/read_trigger.m, private/read_yokogawa_data.m, private/read_yokogawa_event.m,
	  private/read_yokogawa_header.m, private/readbdf.m, private/readmarkerfile.m,
	  private/timestamp_neuralynx.m, private/timestamp_plexon.m, private/tokenize.m,
	  private/warp_apply.m, private/write_brainvision_eeg.m, private/write_ctf_shm.m,
	  private/write_ctf_shm.mexa64, private/write_ctf_shm.mexglx, private/write_ctf_shm.mexmaci,
	  private/write_neuralynx_ncs.m, private/write_neuralynx_nts.m, private/write_plexon_nex.m,
	  private/yokogawa2grad.m, read_data.m, read_event.m, read_header.m, read_headshape.m,
	  read_mri.m, read_sens.m, read_spike.m, read_vol.m, write_data.m, write_event.m: set the
	  executable property to OFF on many files that should not be executable (m-files,
	  mex-files, readme, etc.)

2009-11-30 11:28  roboos

	* private/avw_hdr_make.m, private/avw_hdr_read.m, private/avw_hdr_write.m,
	  private/filetype_check_uri.m, private/openbdf.m, private/read_4d_hdr.m,
	  private/read_asa.m, private/read_asa_bnd.m, private/read_asa_dip.m,
	  private/read_asa_vol.m, private/read_biff.m, private/read_biosemi_bdf.m,
	  private/read_brainvision_eeg.m, private/read_brainvision_vhdr.m, private/read_bti_ascii.m,
	  private/read_bti_m4d.m, private/read_ced_son.m, private/read_ctf_ascii.m,
	  private/read_ctf_coef.m, private/read_ctf_dat.m, private/read_ctf_hc.m,
	  private/read_ctf_hdm.m, private/read_ctf_meg4.m, private/read_ctf_mri.m,
	  private/read_ctf_mri4.m, private/read_ctf_res4.m, private/read_ctf_sens.m,
	  private/read_edf.m, private/read_nexstim_nxe.m, private/read_ns_avg.m,
	  private/read_ns_cnt.m, private/read_ns_eeg.m, private/read_off.m,
	  private/read_sbin_data.m, private/read_sbin_events.m, private/read_sbin_header.m,
	  private/read_yokogawa_data.m, private/read_yokogawa_event.m,
	  private/read_yokogawa_header.m, private/readbdf.m, private/readmarkerfile.m,
	  private/yokogawa2grad.m, read_data.m, read_header.m: changed all occurences of tabs into 4
	  spaces

2009-11-30 08:53  roboos

	* chantype.m, filetype.m, flush_data.m, flush_event.m, flush_header.m, private/ama2vol.m,
	  private/appendevent.m, private/apply_montage.m, private/avw_hdr_make.m,
	  private/avw_hdr_read.m, private/avw_hdr_write.m, private/avw_img_read.m,
	  private/avw_img_write.m, private/bigendian.m, private/bti2grad.m, private/buffer.m,
	  private/convert_units.m, private/cstructdecode.m, private/ctf2grad.m,
	  private/estimate_units.m, private/fif2grad.m, private/filetype_check_extension.m,
	  private/filetype_check_header.m, private/filetype_check_uri.m, private/filter_event.m,
	  private/getsubfield.m, private/hastoolbox.m, private/headcoordinates.m,
	  private/issubfield.m, private/keyval.m, private/littleendian.m, private/loadama.m,
	  private/match_str.m, private/mne2grad.m, private/mxDeserialize.m, private/mxSerialize.m,
	  private/neuralynx_crc.m, private/neuralynx_getheader.m, private/neuralynx_numrecords.m,
	  private/neuralynx_timestamp.m, private/np_read_splitted_fileinfo.m, private/np_readdata.m,
	  private/np_readfileinfo.m, private/np_readmarker.m, private/openbdf.m,
	  private/read_24bit.m, private/read_4d_hdr.m, private/read_asa.m, private/read_asa_bnd.m,
	  private/read_asa_dip.m, private/read_asa_elc.m, private/read_asa_mri.m,
	  private/read_asa_msr.m, private/read_asa_vol.m, private/read_besa_avr.m,
	  private/read_besa_mul.m, private/read_besa_pdg.m, private/read_besa_src.m,
	  private/read_besa_swf.m, private/read_besa_tfc.m, private/read_bham.m,
	  private/read_biff.m, private/read_biosemi_bdf.m, private/read_biosig_data.m,
	  private/read_biosig_header.m, private/read_brainvision_eeg.m,
	  private/read_brainvision_marker.m, private/read_brainvision_pos.m,
	  private/read_brainvision_vhdr.m, private/read_brainvision_vmrk.m,
	  private/read_bti_ascii.m, private/read_bti_hs.m, private/read_bti_m4d.m,
	  private/read_bv_srf.m, private/read_ced_son.m, private/read_combined_ds.m,
	  private/read_ctf_ascii.m, private/read_ctf_cls.m, private/read_ctf_coef.m,
	  private/read_ctf_dat.m, private/read_ctf_hc.m, private/read_ctf_hdm.m,
	  private/read_ctf_meg4.m, private/read_ctf_mri.m, private/read_ctf_mri4.m,
	  private/read_ctf_res4.m, private/read_ctf_sens.m, private/read_ctf_shape.m,
	  private/read_ctf_shm.m, private/read_ctf_trigger.m, private/read_curry.m,
	  private/read_edf.m, private/read_eeglabdata.m, private/read_eeglabevent.m,
	  private/read_eeglabheader.m, private/read_egis_data.m, private/read_egis_header.m,
	  private/read_elec.m, private/read_fcdc_trl.m, private/read_labview_dtlg.m,
	  private/read_lay.m, private/read_mat.m, private/read_micromed_trc.m,
	  private/read_mpi_dap.m, private/read_mpi_ds.m, private/read_neuralynx_bin.m,
	  private/read_neuralynx_cds.m, private/read_neuralynx_dma.m, private/read_neuralynx_ds.m,
	  private/read_neuralynx_ncs.m, private/read_neuralynx_nev.m, private/read_neuralynx_nse.m,
	  private/read_neuralynx_nst.m, private/read_neuralynx_nts.m, private/read_neuralynx_ntt.m,
	  private/read_neuralynx_sdma.m, private/read_neuralynx_tsh.m, private/read_neuralynx_tsl.m,
	  private/read_neuralynx_ttl.m, private/read_nex_data.m, private/read_nex_event.m,
	  private/read_nex_header.m, private/read_nexstim_event.m, private/read_nexstim_nxe.m,
	  private/read_nimh_cortex.m, private/read_nmc_archive_k_data.m,
	  private/read_nmc_archive_k_event.m, private/read_nmc_archive_k_hdr.m,
	  private/read_ns_avg.m, private/read_ns_cnt.m, private/read_ns_eeg.m,
	  private/read_ns_hdr.m, private/read_off.m, private/read_plexon_ddt.m,
	  private/read_plexon_ds.m, private/read_plexon_nex.m, private/read_plexon_plx.m,
	  private/read_polhemus_fil.m, private/read_sbin_data.m, private/read_sbin_events.m,
	  private/read_sbin_header.m, private/read_shm_data.m, private/read_shm_event.m,
	  private/read_shm_header.m, private/read_spike6mat_data.m, private/read_spike6mat_header.m,
	  private/read_spmeeg_data.m, private/read_spmeeg_event.m, private/read_spmeeg_header.m,
	  private/read_trigger.m, private/read_yokogawa_data.m, private/read_yokogawa_event.m,
	  private/read_yokogawa_header.m, private/readbdf.m, private/readmarkerfile.m,
	  private/rmsubfield.m, private/senslabel.m, private/senstype.m, private/setsubfield.m,
	  private/timestamp_neuralynx.m, private/timestamp_plexon.m, private/tokenize.m,
	  private/voltype.m, private/warp_apply.m, private/write_brainvision_eeg.m,
	  private/write_ctf_shm.m, private/write_neuralynx_ncs.m, private/write_neuralynx_nts.m,
	  private/write_plexon_nex.m, private/yokogawa2grad.m, read_data.m, read_event.m,
	  read_header.m, read_headshape.m, read_mri.m, read_sens.m, read_spike.m, read_vol.m,
	  write_data.m, write_event.m: changed svn property for keywords Log and Rev

2009-11-30 08:49  roboos

	* chantype.m, filetype.m, flush_data.m, flush_event.m, flush_header.m, private/ama2vol.m,
	  private/appendevent.m, private/apply_montage.m, private/avw_hdr_make.m,
	  private/avw_hdr_read.m, private/avw_hdr_write.m, private/avw_img_read.m,
	  private/avw_img_write.m, private/bigendian.m, private/bti2grad.m, private/buffer.m,
	  private/convert_units.m, private/cstructdecode.m, private/ctf2grad.m,
	  private/estimate_units.m, private/fif2grad.m, private/filetype_check_extension.m,
	  private/filetype_check_header.m, private/filetype_check_uri.m, private/filter_event.m,
	  private/getsubfield.m, private/hastoolbox.m, private/headcoordinates.m,
	  private/issubfield.m, private/keyval.m, private/littleendian.m, private/loadama.m,
	  private/match_str.m, private/mne2grad.m, private/mxDeserialize.m, private/mxSerialize.m,
	  private/neuralynx_crc.m, private/neuralynx_getheader.m, private/neuralynx_numrecords.m,
	  private/neuralynx_timestamp.m, private/np_read_splitted_fileinfo.m, private/np_readdata.m,
	  private/np_readfileinfo.m, private/np_readmarker.m, private/openbdf.m,
	  private/read_24bit.m, private/read_4d_hdr.m, private/read_asa.m, private/read_asa_bnd.m,
	  private/read_asa_dip.m, private/read_asa_elc.m, private/read_asa_mri.m,
	  private/read_asa_msr.m, private/read_asa_vol.m, private/read_besa_avr.m,
	  private/read_besa_mul.m, private/read_besa_pdg.m, private/read_besa_src.m,
	  private/read_besa_swf.m, private/read_besa_tfc.m, private/read_bham.m,
	  private/read_biff.m, private/read_biosemi_bdf.m, private/read_biosig_data.m,
	  private/read_biosig_header.m, private/read_brainvision_eeg.m,
	  private/read_brainvision_marker.m, private/read_brainvision_pos.m,
	  private/read_brainvision_vhdr.m, private/read_brainvision_vmrk.m,
	  private/read_bti_ascii.m, private/read_bti_hs.m, private/read_bti_m4d.m,
	  private/read_bv_srf.m, private/read_ced_son.m, private/read_combined_ds.m,
	  private/read_ctf_ascii.m, private/read_ctf_cls.m, private/read_ctf_coef.m,
	  private/read_ctf_dat.m, private/read_ctf_hc.m, private/read_ctf_hdm.m,
	  private/read_ctf_meg4.m, private/read_ctf_mri.m, private/read_ctf_res4.m,
	  private/read_ctf_sens.m, private/read_ctf_shape.m, private/read_ctf_shm.m,
	  private/read_ctf_trigger.m, private/read_curry.m, private/read_edf.m,
	  private/read_eeglabdata.m, private/read_eeglabevent.m, private/read_eeglabheader.m,
	  private/read_egis_data.m, private/read_egis_header.m, private/read_elec.m,
	  private/read_fcdc_trl.m, private/read_labview_dtlg.m, private/read_lay.m,
	  private/read_mat.m, private/read_micromed_trc.m, private/read_mpi_dap.m,
	  private/read_mpi_ds.m, private/read_neuralynx_bin.m, private/read_neuralynx_cds.m,
	  private/read_neuralynx_dma.m, private/read_neuralynx_ds.m, private/read_neuralynx_ncs.m,
	  private/read_neuralynx_nev.m, private/read_neuralynx_nse.m, private/read_neuralynx_nst.m,
	  private/read_neuralynx_nts.m, private/read_neuralynx_ntt.m, private/read_neuralynx_sdma.m,
	  private/read_neuralynx_tsh.m, private/read_neuralynx_tsl.m, private/read_neuralynx_ttl.m,
	  private/read_nex_data.m, private/read_nex_event.m, private/read_nex_header.m,
	  private/read_nexstim_event.m, private/read_nexstim_nxe.m, private/read_nimh_cortex.m,
	  private/read_nmc_archive_k_data.m, private/read_nmc_archive_k_event.m,
	  private/read_nmc_archive_k_hdr.m, private/read_ns_avg.m, private/read_ns_cnt.m,
	  private/read_ns_eeg.m, private/read_ns_hdr.m, private/read_off.m,
	  private/read_plexon_ddt.m, private/read_plexon_ds.m, private/read_plexon_nex.m,
	  private/read_plexon_plx.m, private/read_polhemus_fil.m, private/read_sbin_data.m,
	  private/read_sbin_events.m, private/read_sbin_header.m, private/read_shm_data.m,
	  private/read_shm_event.m, private/read_shm_header.m, private/read_spike6mat_data.m,
	  private/read_spike6mat_header.m, private/read_spmeeg_data.m, private/read_spmeeg_event.m,
	  private/read_spmeeg_header.m, private/read_trigger.m, private/read_yokogawa_data.m,
	  private/read_yokogawa_event.m, private/read_yokogawa_header.m, private/readbdf.m,
	  private/readmarkerfile.m, private/rmsubfield.m, private/senslabel.m, private/senstype.m,
	  private/setsubfield.m, private/timestamp_neuralynx.m, private/timestamp_plexon.m,
	  private/tokenize.m, private/voltype.m, private/warp_apply.m,
	  private/write_brainvision_eeg.m, private/write_ctf_shm.m, private/write_neuralynx_ncs.m,
	  private/write_neuralynx_nts.m, private/write_plexon_nex.m, private/yokogawa2grad.m,
	  read_data.m, read_event.m, read_header.m, read_headshape.m, read_mri.m, read_sens.m,
	  read_spike.m, read_vol.m, write_data.m, write_event.m: changed svn property eol-style to
	  native to ensure consistent end-of-line behaviour on windows and linux

2009-11-30 08:47  roboos

	* private/read_ctf_mri4.m: fixed end-of-line characters (was mixed unix/windows)

2009-11-27 23:24  vlalit

	* chantype.m, private/read_yokogawa_event.m, private/yokogawa2grad.m, read_event.m: Further
	  efforts to improve support of Yokogawa

2009-11-27 16:59  vlalit

	* filetype.m, read_headshape.m: Added support for Yokogawa fiducials exported to ASCII
	  (thanks to Tilmann Sander-Thommes).

2009-11-24 10:53  stewhi

	* private/avw_img_read.m: hastoolbox-added

2009-11-20 19:45  roboos

	* private/read_brainvision_vhdr.m: added piece of code to determine the number of samples in
	  vectorized ascii format

2009-11-20 19:44  roboos

	* read_data.m: avoind rounding inf to the nearest sample

2009-11-11 10:00  roboos

	* read_header.m: fixed bug in read_header, causing the baseline period in an averaged fif
	  file to be incorrectly represented (i.e. nSamplesPre was negative, should be positive)

2009-10-27 16:01  roboos

	* chantype.m, filetype.m, flush_data.m, flush_event.m, flush_header.m, private/ama2vol.m,
	  private/appendevent.m, private/bigendian.m, private/bti2grad.m, private/cstructdecode.m,
	  private/ctf2grad.m, private/fif2grad.m, private/filetype_check_extension.m,
	  private/filetype_check_header.m, private/filetype_check_uri.m, private/filter_event.m,
	  private/littleendian.m, private/loadama.m, private/mne2grad.m, private/neuralynx_crc.m,
	  private/np_read_splitted_fileinfo.m, private/np_readmarker.m, private/read_4d_hdr.m,
	  private/read_asa.m, private/read_asa_bnd.m, private/read_asa_dip.m,
	  private/read_asa_elc.m, private/read_asa_mri.m, private/read_asa_msr.m,
	  private/read_asa_vol.m, private/read_besa_avr.m, private/read_besa_mul.m,
	  private/read_besa_pdg.m, private/read_besa_src.m, private/read_besa_swf.m,
	  private/read_besa_tfc.m, private/read_bham.m, private/read_biff.m,
	  private/read_biosemi_bdf.m, private/read_biosig_data.m, private/read_biosig_header.m,
	  private/read_brainvision_eeg.m, private/read_brainvision_marker.m,
	  private/read_brainvision_pos.m, private/read_brainvision_vhdr.m,
	  private/read_brainvision_vmrk.m, private/read_bti_ascii.m, private/read_bti_hs.m,
	  private/read_bti_m4d.m, private/read_bv_srf.m, private/read_ced_son.m,
	  private/read_combined_ds.m, private/read_ctf_ascii.m, private/read_ctf_cls.m,
	  private/read_ctf_coef.m, private/read_ctf_dat.m, private/read_ctf_hc.m,
	  private/read_ctf_hdm.m, private/read_ctf_meg4.m, private/read_ctf_mri.m,
	  private/read_ctf_mri4.m, private/read_ctf_res4.m, private/read_ctf_sens.m,
	  private/read_ctf_shape.m, private/read_ctf_trigger.m, private/read_curry.m,
	  private/read_edf.m, private/read_eeglabdata.m, private/read_eeglabevent.m,
	  private/read_eeglabheader.m, private/read_egis_data.m, private/read_egis_header.m,
	  private/read_elec.m, private/read_fcdc_trl.m, private/read_labview_dtlg.m,
	  private/read_mat.m, private/read_mpi_dap.m, private/read_mpi_ds.m,
	  private/read_neuralynx_bin.m, private/read_neuralynx_cds.m, private/read_neuralynx_dma.m,
	  private/read_neuralynx_ds.m, private/read_neuralynx_ncs.m, private/read_neuralynx_nev.m,
	  private/read_neuralynx_nse.m, private/read_neuralynx_nst.m, private/read_neuralynx_nts.m,
	  private/read_neuralynx_ntt.m, private/read_neuralynx_sdma.m, private/read_neuralynx_tsh.m,
	  private/read_neuralynx_tsl.m, private/read_neuralynx_ttl.m, private/read_nex_event.m,
	  private/read_nexstim_event.m, private/read_nexstim_nxe.m, private/read_nimh_cortex.m,
	  private/read_nmc_archive_k_data.m, private/read_nmc_archive_k_event.m,
	  private/read_nmc_archive_k_hdr.m, private/read_ns_avg.m, private/read_ns_cnt.m,
	  private/read_ns_eeg.m, private/read_ns_hdr.m, private/read_off.m,
	  private/read_plexon_ddt.m, private/read_plexon_ds.m, private/read_plexon_nex.m,
	  private/read_plexon_plx.m, private/read_polhemus_fil.m, private/read_sbin_data.m,
	  private/read_sbin_events.m, private/read_sbin_header.m, private/read_shm_data.m,
	  private/read_shm_event.m, private/read_shm_header.m, private/read_spike6mat_header.m,
	  private/read_trigger.m, private/read_yokogawa_data.m, private/read_yokogawa_event.m,
	  private/read_yokogawa_header.m, private/tokenize.m, private/warp_apply.m,
	  private/write_brainvision_eeg.m, private/write_neuralynx_ncs.m,
	  private/write_neuralynx_nts.m, private/write_plexon_nex.m, private/yokogawa2grad.m,
	  read_data.m, read_event.m, read_header.m, read_headshape.m, read_mri.m, read_sens.m,
	  read_spike.m, read_vol.m, write_data.m, write_event.m: removed the old cvs log comments
	  from each of the fieldtrip source code files
	  subversion (a.k.a. svn) does not make use of the special $Log$ keyword, which means that
	  the log messages do not reflect the latest changes
	  you can use 'svn log <filename.m>' or 'svn -v log | less' to get the same detailled
	  information as used to be in the cvs log

2009-10-27 15:51  roboos

	* private/filter_event.m: automatically add event numbers if filtering on number is
	  requested, this allows it to be used for offline analysis

2009-10-26 10:28  roevdmei

	* private/read_nmc_archive_k_hdr.m: added forgotten copyright notice

2009-10-26 10:28  roevdmei

	* private/read_nmc_archive_k_data.m: added forgotten copyright notice

2009-10-26 10:27  roevdmei

	* private/read_nmc_archive_k_event.m: added forgotten copyright notice

2009-10-23 07:32  roboos

	* README: updated readme and copyrights

2009-10-21 14:40  roevdmei

	* private/read_nmc_archive_k_data.m: added log

2009-10-21 14:09  roevdmei

	* private/read_nmc_archive_k_event.m: minor changes to comments

2009-10-21 14:08  roevdmei

	* private/read_nmc_archive_k_event.m: minor changes to comments

2009-10-21 10:25  roboos

	* ., @uint64, COPYING, README, chantype.m, filetype.m, flush_data.m, flush_event.m,
	  flush_header.m, private, private/ama2vol.m, private/appendevent.m,
	  private/apply_montage.m, private/avw_hdr_make.m, private/avw_hdr_read.m,
	  private/avw_hdr_write.m, private/avw_img_read.m, private/avw_img_write.m,
	  private/bigendian.m, private/bti2grad.m, private/buffer.m, private/buffer.mexa64,
	  private/buffer.mexglx, private/buffer.mexmac, private/buffer.mexmaci,
	  private/buffer.mexw32, private/convert_units.m, private/cstructdecode.m,
	  private/ctf2grad.m, private/estimate_units.m, private/fif2grad.m,
	  private/filetype_check_extension.m, private/filetype_check_header.m,
	  private/filetype_check_uri.m, private/filter_event.m, private/getsubfield.m,
	  private/hastoolbox.m, private/headcoordinates.m, private/issubfield.m, private/keyval.m,
	  private/littleendian.m, private/loadama.m, private/match_str.m, private/mne2grad.m,
	  private/mxDeserialize.c, private/mxDeserialize.m, private/mxDeserialize.mexa64,
	  private/mxDeserialize.mexmac, private/mxDeserialize.mexw32, private/mxSerialize.c,
	  private/mxSerialize.m, private/mxSerialize.mexa64, private/mxSerialize.mexglx,
	  private/mxSerialize.mexmac, private/mxSerialize.mexw32, private/neuralynx_crc.m,
	  private/neuralynx_getheader.m, private/neuralynx_numrecords.m,
	  private/neuralynx_timestamp.m, private/np_read_splitted_fileinfo.m, private/np_readdata.m,
	  private/np_readfileinfo.m, private/np_readmarker.m, private/openbdf.m,
	  private/pthreadVC2.dll, private/read_24bit.c, private/read_24bit.m,
	  private/read_24bit.mexa64, private/read_24bit.mexglx, private/read_24bit.mexmac,
	  private/read_24bit.mexmaci, private/read_24bit.mexw32, private/read_4d_hdr.m,
	  private/read_asa.m, private/read_asa_bnd.m, private/read_asa_dip.m,
	  private/read_asa_elc.m, private/read_asa_mri.m, private/read_asa_msr.m,
	  private/read_asa_vol.m, private/read_besa_avr.m, private/read_besa_mul.m,
	  private/read_besa_pdg.m, private/read_besa_src.m, private/read_besa_swf.m,
	  private/read_besa_tfc.m, private/read_bham.m, private/read_biff.m,
	  private/read_biosemi_bdf.m, private/read_biosig_data.m, private/read_biosig_header.m,
	  private/read_brainvision_eeg.m, private/read_brainvision_marker.m,
	  private/read_brainvision_pos.m, private/read_brainvision_vhdr.m,
	  private/read_brainvision_vmrk.m, private/read_bti_ascii.m, private/read_bti_hs.m,
	  private/read_bti_m4d.m, private/read_bv_srf.m, private/read_ced_son.m,
	  private/read_combined_ds.m, private/read_ctf_ascii.m, private/read_ctf_cls.m,
	  private/read_ctf_coef.m, private/read_ctf_dat.m, private/read_ctf_hc.m,
	  private/read_ctf_hdm.m, private/read_ctf_meg4.m, private/read_ctf_mri.m,
	  private/read_ctf_mri4.m, private/read_ctf_res4.m, private/read_ctf_sens.m,
	  private/read_ctf_shape.m, private/read_ctf_shm.c, private/read_ctf_shm.m,
	  private/read_ctf_shm.mexa64, private/read_ctf_shm.mexglx, private/read_ctf_shm.mexmaci,
	  private/read_ctf_trigger.m, private/read_curry.m, private/read_edf.m,
	  private/read_eeglabdata.m, private/read_eeglabevent.m, private/read_eeglabheader.m,
	  private/read_egis_data.m, private/read_egis_header.m, private/read_elec.m,
	  private/read_fcdc_trl.m, private/read_labview_dtlg.m, private/read_lay.m,
	  private/read_mat.m, private/read_micromed_trc.m, private/read_mpi_dap.m,
	  private/read_mpi_ds.m, private/read_neuralynx_bin.m, private/read_neuralynx_cds.m,
	  private/read_neuralynx_dma.m, private/read_neuralynx_ds.m, private/read_neuralynx_ncs.m,
	  private/read_neuralynx_nev.m, private/read_neuralynx_nse.m, private/read_neuralynx_nst.m,
	  private/read_neuralynx_nts.m, private/read_neuralynx_ntt.m, private/read_neuralynx_sdma.m,
	  private/read_neuralynx_tsh.m, private/read_neuralynx_tsl.m, private/read_neuralynx_ttl.m,
	  private/read_nex_data.m, private/read_nex_event.m, private/read_nex_header.m,
	  private/read_nexstim_event.m, private/read_nexstim_nxe.m, private/read_nimh_cortex.m,
	  private/read_nmc_archive_k_data.m, private/read_nmc_archive_k_event.m,
	  private/read_nmc_archive_k_hdr.m, private/read_ns_avg.m, private/read_ns_cnt.m,
	  private/read_ns_eeg.m, private/read_ns_hdr.m, private/read_off.m,
	  private/read_plexon_ddt.m, private/read_plexon_ds.m, private/read_plexon_nex.m,
	  private/read_plexon_plx.m, private/read_polhemus_fil.m, private/read_sbin_data.m,
	  private/read_sbin_events.m, private/read_sbin_header.m, private/read_shm_data.m,
	  private/read_shm_event.m, private/read_shm_header.m, private/read_spike6mat_data.m,
	  private/read_spike6mat_header.m, private/read_spmeeg_data.m, private/read_spmeeg_event.m,
	  private/read_spmeeg_header.m, private/read_trigger.m, private/read_yokogawa_data.m,
	  private/read_yokogawa_event.m, private/read_yokogawa_header.m, private/readbdf.m,
	  private/readmarkerfile.m, private/rmsubfield.m, private/senslabel.m, private/senstype.m,
	  private/setsubfield.m, private/timestamp_neuralynx.m, private/timestamp_plexon.m,
	  private/tokenize.m, private/voltype.m, private/warp_apply.m,
	  private/write_brainvision_eeg.m, private/write_ctf_shm.c, private/write_ctf_shm.m,
	  private/write_ctf_shm.mexa64, private/write_ctf_shm.mexglx, private/write_ctf_shm.mexmaci,
	  private/write_neuralynx_ncs.m, private/write_neuralynx_nts.m, private/write_plexon_nex.m,
	  private/yokogawa2grad.m, read_data.m, read_event.m, read_header.m, read_headshape.m,
	  read_mri.m, read_sens.m, read_spike.m, read_vol.m, write_data.m, write_event.m: initial
	  import

Related documentation


Related projects on electrophysiology (EEG, MEG) data I/O are


Lists of EEG and MEG file formats can be found here:

development/fileio.txt · Last modified: 2009/06/03 14:32 by robert
Back to top
chimeric.de = chi`s home Creative Commons License Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0