Offline Analysis warning, please relax your conditions

Locked
omarz
Posts: 6
Joined: 11 May 2008, 01:09

Offline Analysis warning, please relax your conditions

Post by omarz » 11 Nov 2008, 06:45

Hi,
I am trying to do an mu rhythm offline analysis of my recorded EGG data of 1D dimensional control, the data is recorded from C3,C4,Cz. I have basically 3 conditions left, right, rest.
when I use the offline analysis tool, I specify Target Condition 1,2 correctly (TargetCode == 1, TargetCode == 2), I make sure to check the state vector in signal viewer first. for the inter trial condition I specify Feedback == 0.
The warning that I get is: "the analysis has resulted in less than 3 useable trials when Target condition 1 is used in conjunction with inter trial condition, please relax your conditions". However, I know that I have more than 15 trials for each condition that satisfy both conditions, I use signal viewer to count them.

I am not sure if I am getting something wrong, any help appreciated. I use matlab 2007b.

just to note, the offline analysis works fine for the sample data files eeg1-1 to 3.

Omar,

This is the parameter file, you might find useful.


==============================================
==============================================
System:Configuration matrix OperatorVersion= { Framework Revision Build } 1 2.0 1827:1828,%202008/03/12%2013:27:01 2008/03/12%2013:50:52 // operator module version information
System:State%20Vector int StateVectorLength= 11 16 1 30 // length of the state vector in bytes
Source:Signal%20Properties:SignalGeneratorADC int SourceCh= 2 16 1 % // number of digitized and stored channels
Source:Signal%20Properties:SignalGeneratorADC int SampleBlockSize= 32 32 1 % // number of samples transmitted at a time
Source:Signal%20Properties:SignalGeneratorADC int SamplingRate= 256Hz 256Hz 1 % // sample rate
Source:Signal%20Properties:DataIOFilter list ChannelNames= 0 // list of channel names
Source:Signal%20Properties:DataIOFilter floatlist SourceChOffset= 2 0 0 0 % % // Offset for channels in A/D units
Source:Signal%20Properties:DataIOFilter floatlist SourceChGain= 2 1 1 0.003 % % // gain for each channel (A/D units -> muV)
Storage:Data%20Location:DataIOFilter string DataDirectory= ..\data ..\data % % // path to top level data directory (directory)
Storage:Session:DataIOFilter string SubjectName= gaetano Name % % // subject alias
Storage:Session:DataIOFilter string SubjectSession= 001 001 % % // three-digit session number
Storage:Session:DataIOFilter string SubjectRun= 01 00 % % // two-digit run number
Storage:Documentation:DataIOFilter string ID_System= % // BCI2000 System Code
Storage:Documentation:DataIOFilter string ID_Amp= % // BCI2000 Amp Code
Storage:Documentation:DataIOFilter string ID_Montage= % // BCI2000 Cap Montage Code
Visualize:Timing:DataIOFilter int VisualizeTiming= 1 1 0 1 // visualize system timing (0=no, 1=yes) (boolean)
Visualize:Source%20Signal:DataIOFilter int VisualizeSource= 1 1 0 1 // visualize raw brain signal (0=no, 1=yes) (boolean)
Visualize:Source%20Signal:DataIOFilter int VisualizeSourceDecimation= 1 1 1 % // decimation factor for raw brain signal
Visualize:Source%20Signal:DataIOFilter int VisualizeSourceTime= 10 2 0 % // how much time in Source visualization
Visualize:Source%20Signal:DataIOFilter int SourceMin= -2048muV -100muV % % // raw signal vis Min Value
Visualize:Source%20Signal:DataIOFilter int SourceMax= 2048muV 100muV % % // raw signal vis Max Value
Source:SignalGeneratorADC int ModulateAmplitude= 0 0 0 1 // Modulate the amplitude with the mouse (0=no, 1=yes) (boolean)
Source:SignalGeneratorADC int SineChannelX= 0 0 0 % // Channel number of sinewave controlled by mouse x position
Source:SignalGeneratorADC int SineChannelY= 0 0 0 % // Channel number of sinewave controlled by mouse y position (0 for all)
Source:SignalGeneratorADC int SineChannelZ= 0 0 0 % // Channel number of sinewave controlled by mouse key state
Source:SignalGeneratorADC float SineFrequency= 10Hz 10Hz % % // Frequency of sine wave
Source:SignalGeneratorADC int SineAmplitude= 100muV 100muV % % // Amplitude of sine wave
Source:SignalGeneratorADC int NoiseAmplitude= 30muV 30muV % % // Amplitude of white noise (common to all channels)
Source:SignalGeneratorADC int DCOffset= 0muV 0muV % % // DC offset (common to all channels)
Source:SignalGeneratorADC string OffsetMultiplier= % StimulusType % % // Expression to multiply offset by
Source:SignalGeneratorADC int RandomSeed= 0 0 0 1 // Initialization value for random number generator (initialize from time if 0)
Source:SignalGeneratorADC int SignalType= 0 0 0 2 // numeric type of output signal: 0: int16, 1: float32, 2: int32 (enumeration)
Storage:BCI2000FileWriter int SavePrmFile= 1 1 0 1 // save additional parameter file (0=no, 1=yes) (boolean)
Storage:BCI2000FileWriter string StorageTime= 0 // time of beginning of data storage
Source:Alignment:AlignmentFilter int AlignChannels= 1 0 0 1 // align channels in time (0=no, 1=yes)
Source:Alignment:AlignmentFilter floatlist SourceChTimeOffset= 0 0 % % // time offsets for all source channels (may be empty)
Source:Online%20Processing:TransmissionFilter list TransmitChList= 2 1 2 1 1 % // list of transmitted channels
System:Core%20Connections string SignalSourcePort= 1359 4200 1024 65535 // the SignalSource module's listening port
System:Core%20Connections string SignalSourceIP= 192.168.1.4 127.0.0.1 % % // the SignalSource module's listening IP
System:Configuration matrix SignalSourceVersion= { Framework Revision Build } 1 2.0 1827:1828,%202008/03/12%2013:27:01 2008/03/12%2013:50:52 // SignalSource version information
System:Configuration matrix SignalSourceFilterChain= 8 { Filter%20Name Position%20String } DataIOFilter 0 SignalGeneratorADC 1 NullFileWriter 1 BCI2000FileWriter 1 EDFFileWriter 1 GDFFileWriter 1 AlignmentFilter 1.1 TransmissionFilter 1.2 // SignalSource filter chain
Visualize:Processing%20Stages int VisualizeAlignmentFilter= 0 0 0 1 // Visualize AlignmentFilter output (boolean)
Visualize:Processing%20Stages int VisualizeTransmissionFilter= 0 0 0 1 // Visualize TransmissionFilter output (boolean)
Filtering:SpatialFilter matrix SpatialFilter= 2 2 1 0 0 1 0 % % // columns represent input channels, rows represent output channels
Filtering:ARFilter int WindowLength= 0.5s 0.5s % % // Time window for spectrum computation
Filtering:ARFilter int Detrend= 1 0 0 2 // Detrend data? 0: no, 1: mean, 2: linear (enumeration)
Filtering:ARFilter int ModelOrder= 16 16 0 % // AR model order
Filtering:ARFilter int OutputType= 1 0 0 2 // 0: Spectral Amplitude, 1: Spectral Power, 2: AR Coefficients (enumeration)
Filtering:ARFilter float FirstBinCenter= 0Hz 0Hz % % // Center of first frequency bin (as a fraction of sampling rate or in Hz)
Filtering:ARFilter float LastBinCenter= 30Hz 30Hz % % // Center of last frequency bin (as a fraction of sampling rate or in Hz)
Filtering:ARFilter float BinWidth= 3Hz 3Hz % % // Width of spectral bins (as a fraction of sampling rate or in Hz)
Filtering:ARFilter int EvaluationsPerBin= 15 15 1 % // Number of uniformly spaced evaluation points entering into a single bin value
Filtering:LinearClassifier matrix Classifier= 2 { input%20channel input%20element%20(bin) output%20channel weight } 1 4 1 -1 2 4 1 1 // Linear classification matrix in sparse representation
Filtering:LPFilter float LPTimeConstant= 0 16s 0 % // time constant for the low pass filter
Filtering:Normalizer floatlist NormalizerOffsets= 2 -42227 0 0 % % // normalizer offsets
Filtering:Normalizer floatlist NormalizerGains= 2 4.66225e-06 1 0 % % // normalizer gain values
Filtering:Normalizer intlist Adaptation= 2 2 2 0 0 2 // 0: no adaptation, 1: zero mean, 2: zero mean, unit variance (enumeration)
Filtering:Normalizer matrix BufferConditions= 2 1 (Feedback)&&(TargetCode==1) (Feedback)&&(TargetCode==2) // expressions corresponding to data buffers (columns correspond to output channels, multiple rows correspond to multiple buffers)
Filtering:Normalizer float BufferLength= 4s 9s % % // time window of past data per buffer that enters into statistic
Filtering:Normalizer string UpdateTrigger= (Feedback==0) // expression to trigger offset/gain update when changing from 0 (use empty string for continuous update)
System:Core%20Connections string SignalProcessingPort= 1361 4200 1024 65535 // the SignalProcessing module's listening port
System:Core%20Connections string SignalProcessingIP= 192.168.1.4 127.0.0.1 % % // the SignalProcessing module's listening IP
System:Configuration matrix SignalProcessingVersion= { Framework Revision Build } 1 2.0 1827:1828,%202008/03/12%2013:27:01 2008/03/12%2013:50:52 // SignalProcessing version information
System:Configuration matrix SignalProcessingFilterChain= 5 { Filter%20Name Position%20String } SpatialFilter 2.B ARFilter 2.C LinearClassifier 2.D LPFilter 2.D1 Normalizer 2.E // SignalProcessing filter chain
Visualize:Processing%20Stages int VisualizeSpatialFilter= 0 0 0 1 // Visualize SpatialFilter output (boolean)
Visualize:Processing%20Stages int VisualizeARFilter= 0 0 0 1 // Visualize ARFilter output (boolean)
Visualize:Processing%20Stages int VisualizeLinearClassifier= 0 0 0 1 // Visualize LinearClassifier output (boolean)
Visualize:Processing%20Stages int VisualizeLPFilter= 0 0 0 1 // Visualize LPFilter output (boolean)
Visualize:Processing%20Stages int VisualizeNormalizer= 0 0 0 1 // Visualize Normalizer output (boolean)
Connector:ConnectorInput list ConnectorInputFilter= 0 // list of state names or signal elements to allow, "*" for any, signal elements as in "Signal(1,0)"
Connector:ConnectorInput string ConnectorInputAddress= % localhost:20320 % % // IP address/port to read from, e.g. localhost:20320
Visualize:Application%20Window:ApplicationBase:%:DisplayVisualization int VisualizeApplicationWindow= 0 0 0 1 // Display miniature copy of application window (boolean)
Visualize:Application%20Window:ApplicationBase:%:DisplayVisualization int AppWindowSpatialDecimation= 8 8 1 % // Application window decimation (shrinking) factor
Visualize:Application%20Window:ApplicationBase:%:DisplayVisualization int AppWindowTemporalDecimation= 4 16 1 % // Application window time decimation factor
Application:Window:ApplicationBase int WindowWidth= 640 640 0 % // width of application window
Application:Window:ApplicationBase int WindowHeight= 480 480 0 % // height of application window
Application:Window:ApplicationBase int WindowLeft= 0 0 % % // screen coordinate of application window's left edge
Application:Window:ApplicationBase int WindowTop= 0 0 % % // screen coordinate of application window's top edge
Application:Sequencing:FeedbackTask float PreRunDuration= 1s 2s 0 % // duration of pause preceding first trial
Application:Sequencing:FeedbackTask float PreFeedbackDuration= 1s 2s 0 % // duration of target display prior to feedback
Application:Sequencing:FeedbackTask float FeedbackDuration= 2s 3s 0 % // duration of feedback
Application:Sequencing:FeedbackTask float PostFeedbackDuration= 1s 1s 0 % // duration of result display after feedback
Application:Sequencing:FeedbackTask float ITIDuration= 1s 1s 0 % // duration of inter-trial interval
Application:Sequencing:FeedbackTask float MinRunLength= 120s 120s 0 % // minimum duration of a run
Application:Targets:FeedbackTask int NumberTargets= 2 2 0 15 // number of targets
Application:Window:CursorFeedbackTask int RenderingQuality= 1 0 0 1 // rendering quality: 0: low, 1: high (enumeration)
Application:Window:CursorFeedbackTask int WindowBitDepth= 16 16 1 32 // color bit depth of feedback window
Application:Sequencing:CursorFeedbackTask float MaxFeedbackDuration= 10s % 0 % // abort a trial after this amount of feedback time has expired
Application:3DEnvironment:CursorFeedbackTask floatlist CameraPos= 3 50 50 150 // camera position vector in percent coordinates of 3D area
Application:3DEnvironment:CursorFeedbackTask floatlist CameraAim= 3 50 50 50 // camera aim point in percent coordinates
Application:3DEnvironment:CursorFeedbackTask int CameraProjection= 0 0 0 2 // projection type: 0: flat, 1: wide angle perspective, 2: narrow angle perspective (enumeration)
Application:3DEnvironment:CursorFeedbackTask floatlist LightSourcePos= 3 50 50 100 // light source position in percent coordinates
Application:3DEnvironment:CursorFeedbackTask int LightSourceColor= 0x808080 // light source RGB color (color)
Application:3DEnvironment:CursorFeedbackTask int WorkspaceBoundaryColor= 0xffffff 0 % % // workspace boundary color (0xff000000 for invisible) (color)
Application:3DEnvironment:CursorFeedbackTask string WorkspaceBoundaryTexture= images/grid.bmp // path of workspace boundary texture (inputfile)
Application:Cursor:CursorFeedbackTask float CursorWidth= 10 10 0.0 % // feedback cursor width in percent of screen width
Application:Cursor:CursorFeedbackTask int CursorColorFront= 0xff0000 // cursor color when it is at the front of the workspace (color)
Application:Cursor:CursorFeedbackTask int CursorColorBack= 0xffff00 // cursor color when it is in the back of the workspace (color)
Application:Cursor:CursorFeedbackTask string CursorTexture= % // path of cursor texture (inputfile)
Application:Cursor:CursorFeedbackTask floatlist CursorPos= 3 50 50 50 // cursor starting position
Application:Targets:CursorFeedbackTask matrix Targets= 2 { pos%20x pos%20y pos%20z width%20x width%20y width%20z } 4 50 50 8 50 8 96 50 50 8 50 8 // target positions and widths in percentage coordinates
Application:Targets:CursorFeedbackTask int TargetColor= 0x808080 // target color (color)
Application:Targets:CursorFeedbackTask string TargetTexture= % // path of target texture (inputfile)
Application:Targets:CursorFeedbackTask int TestAllTargets= 1 0 0 1 // test all targets for cursor collision? 0: test only the visible current target, 1: test all targets (enumeration)
Connector:ConnectorOutput string ConnectorOutputAddress= localhost:5000 localhost:20320 % % // IP address/port to write to, e.g. localhost:20320
Application:Localization:Localization string Language= Default Default % % // Language for user messages
Application:Localization:Localization matrix LocalizedStrings= { German } { Timeout Be%20prepared%20... } Inaktiv Achtung%20... // Localized user messages
System:Core%20Connections string ApplicationPort= 1363 4200 1024 65535 // the Application module's listening port
System:Core%20Connections string ApplicationIP= 192.168.1.4 127.0.0.1 % % // the Application module's listening IP
System:Configuration matrix ApplicationVersion= { Framework Revision Build } 1 2.0 1827:1828,%202008/03/12%2013:27:01 2008/03/12%2013:50:52 // Application version information
System:Configuration matrix ApplicationFilterChain= 3 { Filter%20Name Position%20String } ConnectorInput 2.9999 CursorFeedbackTask 3 ConnectorOutput 3.9999 // Application filter chain
===============================================
==============================================

gschalk
Posts: 615
Joined: 28 Jan 2003, 12:37

OA error ...

Post by gschalk » 11 Nov 2008, 07:38

Omarz,

Please download the most recent version of OA. You are using units in your sampling rate definition (256Hz), which caused a problem in earlier versions of OA. This has since been fixed.

Gerv

omarz
Posts: 6
Joined: 11 May 2008, 01:09

Post by omarz » 11 Nov 2008, 23:45

Thanks Gerv for the rapid reply,
I've downloaded the latest code, and it worked fine, however the Topographies figure generates an error which says " Odd number of Inputs" and shows an empty figure window. I've tested it with my data as well as the sample data eeg1-1.

One more question, what the Y scale values of spectra figures are really represents? are they amplitude values in micro volts?!!

I've seen the Y scale values in the tutorial and the values there are somewhere between 0- 100,000. My data generated Y scale values between 0 -1000. How can I interpret these values.
I have used EEGlab in the past, and their spectra figures shows the logarithmic power " Power 10*log_{10}(\muV^{2}/Hz) ".

Thanks in advance

Omar,

josh
Posts: 14
Joined: 07 Apr 2008, 19:52

Post by josh » 14 Nov 2008, 13:49

As a note to treaders, this issue was solved by ensuring that Omar had a copy of the current version of Offline Analysis which was not available through the binary distribution. A new binary distribution will be made available soon that will reflect the updates.

Omar,
Regarding the Y-scale interpretation, yes, I would interpret it as c*\muV^2/Hz. That is, as microvolts squared per hertz multiplied by a constant. The constant comes in due to the Power relationship between the time and frequency domain as described by Parseval's theorem and also to take into account scaling by the amplifier. Hope that helps.

Obviously the standard way to present that data is in dB as EEGLab does. I'll think about making that modification for the next release.

Thanks,
Josh

Locked

Who is online

Users browsing this forum: No registered users and 0 guests