[Master Index]
[Index for Toolbox]
eeg2bs
(Toolbox/eeg2bs.m in BrainStorm 2.0 (Alpha))
Function Synopsis
[data]=eeg2bs(fnamein,fnameout,type,Channel)
Help Text
EEG2BS - (fnamein,fnameout,type,channel)
function [data]=eeg2bs(fnamein,fnameout,type,Channel)
this function converts EEG data files into BrainStorm readable format
fnamein = input file name
fnameout = output filename for BrainStorm format. If fnameout is [],
nothing is saved.
type = input data format
= 'avr' BESA ASCII format
= 'avg' NeuroScan binary format
= 'raw' EGI binary format
data = returns brainstorm data structure
data.ChannelFlag good or bad channels. default = 1
data.Comment Comment. default = 'EEG data'
data.Device Type of device. default = 'EEG amplifier'
data.F Spatiotemporal data. default = 0
data.NoiseCov the noise covariance. default =[]
data.Project Project ?. default =[]
data.Projector Subspace projector. default =[]
data.SourceCov Source covariance. default = []
data.Time time in [s]. default =0;
channel = the BrainStormChannel structure
Cross-Reference Information
This function calls
This function is called by
- importdata C:\BrainStorm_2001\Toolbox\importdata.m
Listing of function C:\BrainStorm_2001\Toolbox\eeg2bs.m
function [data]=eeg2bs(fnamein,fnameout,type,Channel)
%EEG2BS - (fnamein,fnameout,type,channel)
% function [data]=eeg2bs(fnamein,fnameout,type,Channel)
% this function converts EEG data files into BrainStorm readable format
% fnamein = input file name
% fnameout = output filename for BrainStorm format. If fnameout is [],
% nothing is saved.
% type = input data format
% = 'avr' BESA ASCII format
% = 'avg' NeuroScan binary format
% = 'raw' EGI binary format
% data = returns brainstorm data structure
% data.ChannelFlag good or bad channels. default = 1
% data.Comment Comment. default = 'EEG data'
% data.Device Type of device. default = 'EEG amplifier'
% data.F Spatiotemporal data. default = 0
% data.NoiseCov the noise covariance. default =[]
% data.Project Project ?. default =[]
% data.Projector Subspace projector. default =[]
% data.SourceCov Source covariance. default = []
% data.Time time in [s]. default =0;
% channel = the BrainStormChannel structure
%<autobegin> ---------------------- 12-Oct-2004 00:50:32 -----------------------
% --------- Automatically Generated Comments Block Using AUTO_COMMENTS ---------
%
% CATEGORY: Data Processing
%
% Alphabetical list of external functions (non-Matlab):
% toolbox\eeg_load_scan3avg.m
% toolbox\read_besa.m
% toolbox\readraw.m
% toolbox\save_fieldnames.m
%
% At Check-in: $Author: Mosher $ $Revision: 5 $ $Date: 10/11/04 11:30p $
%
% This software is part of BrainStorm Toolbox Version 2.0 (Alpha) 23-Sep-2004
%
% Principal Investigators and Developers:
% ** Richard M. Leahy, PhD, Signal & Image Processing Institute,
% University of Southern California, Los Angeles, CA
% ** John C. Mosher, PhD, Biophysics Group,
% Los Alamos National Laboratory, Los Alamos, NM
% ** Sylvain Baillet, PhD, Cognitive Neuroscience & Brain Imaging Laboratory,
% CNRS, Hopital de la Salpetriere, Paris, France
%
% See BrainStorm website at http://neuroimage.usc.edu for further information.
%
% Copyright (c) 2004 BrainStorm by the University of Southern California
% This software distributed under the terms of the GNU General Public License
% as published by the Free Software Foundation. Further details on the GPL
% license can be found at http://www.gnu.org/copyleft/gpl.html .
%
% FOR RESEARCH PURPOSES ONLY. THE SOFTWARE IS PROVIDED "AS IS," AND THE
% UNIVERSITY OF SOUTHERN CALIFORNIA AND ITS COLLABORATORS DO NOT MAKE ANY
% WARRANTY, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO WARRANTIES OF
% MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, NOR DO THEY ASSUME ANY
% LIABILITY OR RESPONSIBILITY FOR THE USE OF THIS SOFTWARE.
%<autoend> ------------------------ 12-Oct-2004 00:50:32 -----------------------
% ----------------------------- Script History ---------------------------------
% (c) 2004 Felix Darvas, Ph.D. , SIPI University of Southern California
% JCM 11-0ct-2004 Commenting header
% ----------------------------- Script History ---------------------------------
% setting defaults
data.ChannelFlag=1;
data.Comment='EEG data';
data.Device='EEG amplifier';
data.F=0;
data.NoiseCov=[];
data.Project=[];
data.Projector=[];
data.SourceCov=[];
data.Time=0;
if(strcmp(type,'avr')) % import ASCII data in BESA format
[F,t,npts,tsb,di,sb,sc]=read_besa(fnamein);
data.F=F'/1e6; % avr files are in uV scale
data.Time=t/1000; % no ms in BS!
data.ChannelFlag=ones(1,size(F,2));% all channels are good!
% done! that was easy!
end
if(strcmp(type,'avg')) % import binary data in NeuroScan format
F=eeg_load_scan3avg(fnamein); % uses eeg_load_scan3avg from eeg toolbox from Darren Weber
data.F=F.signal;
data.F=F.signal/1e6;% avg files are in uV scale
dt=(F.xmax-F.xmin)/F.pnts;
t=F.xmin+((1:F.pnts)-1)*dt;
data.Time=t/1000; %no ms in BS!
data.ChannelFlag=ones(1,size(F.signal,1)); % all channels are good!
end
if(strcmp(type,'raw')) % import binary data in EGI format
[header, eegData, eventData, outputLog, outputLog2, outputLog3] = readRaw(fnamein);
t=0:(1/header.samplingRate):(header.numSamples-1)/header.samplingRate;
for i=1:header.numEvents
if(strcmp('tim0',char(header.eventCodes{i})))
ix=i;
break
end
end
ix0=find(eventData(ix,:)>0);
if(~isempty(ix0))
ix0=ix0(1);
else
ix0=1;
end
t0=t(ix0);
t=t-t0;
data.F=eegData/1e6;
data.Time=t;
data.ChannelFlag=ones(size(data.F,1),1);
end
% more formats to follow ...
% squeeze in the reference channel with zeroes
ixref=1;
lc=length(Channel);
ld=size(data.F,1);
ix=-1;
for i=1:lc
if(strcmp(Channel(i).Type,'EEG REF'))
ix=i;
end
end
if(lc>ld) % there is no reference channel in the data
if(ix==lc) % fill end of data with zeros
data.F=[data.F;zeros(1,size(data.F,2))]; % adding reference channel with all zeroes.
end
if(ix==1) % fill beginning of data with zeros
data.F=[zeros(1,size(data.F,2));data.F]; % adding reference channel with all zeroes.
end
if(ix>1 & ix<lc) % fill in between
data.F=[data.F(1:ix-1,:);zeros(1,size(data.F,2));data.F(ix:end,:)]; % adding reference channel with all zeroes.
end
if(ix<0) % no reference found, probably we have an average reference
data.F=[data.F;mean(data.F,1)]; % fill last channel with average
end
data.ChannelFlag=[data.ChannelFlag 1];
else
if(lc==ld) % there was a reference channel in the data
data.F=data.F-ones(lc,1)*data.F(ix,:); % subtract reference channel data from all other channels
end
end
% finished conversion
if(~isempty(fnameout))
save_fieldnames(data,fnameout); % saving data in braistorm format
end
Produced by color_mat2html, a customized BrainStorm 2.0 (Alpha) version of mat2html on Tue Oct 12 12:05:14 2004
Cross-Directory links are: ON