consistency of sample blocks in ERPs

Known Issues and Problems with BCI2000
Locked
Flowebird
Posts: 1
Joined: 10 Dec 2010, 08:03

consistency of sample blocks in ERPs

Post by Flowebird » 22 Dec 2010, 05:34

Hi,

we have observed some strange behaviour when using the P3SignalProcessing together with the SignalGenerator:

The noise amplitude was set to zero, the number of epochs to average was set to one and visualization of averaged epochs was enabled.
Therefore we expected the ERP to be a segment of the input sinus function. However, there were small 'jumps' around every 40ms, which equals the duration of single sample blocks.
It seems like the last sample of each block was zero.

Might there be any errors in our parameter settings?

Thanks in advance! Best regards.

-----------------------------------------------------------------------
We used the latest source and the following batch file:

cd ..\prog
start operat.exe
start SignalGenerator.exe 127.0.0.1
start P3SignalProcessing.exe 127.0.0.1
start P3Speller.exe 127.0.0.1

The parameters have been set as follows:

System:Configuration matrix OperatorVersion= { Framework Revision Build } 1 2.x % 18:07:55%20Dec%2021%202010 // operator module version information
System:State%20Vector int StateVectorLength= 14 16 1 30 // length of the state vector in bytes
Source:Signal%20Properties:DataIOFilter int SourceCh= 3 16 1 % // number of digitized and stored channels
Source:Signal%20Properties:DataIOFilter int SampleBlockSize= 10 32 1 % // number of samples transmitted at a time
Source:Signal%20Properties:DataIOFilter int SamplingRate= 250 256Hz 1 % // sample rate
Source:Signal%20Properties:DataIOFilter list ChannelNames= 3 P7 Pz Oz // list of channel names
Source:Signal%20Properties:DataIOFilter floatlist SourceChOffset= 3 0 0 0 0 % % // Offset for channels in A/D units
Source:Signal%20Properties:DataIOFilter floatlist SourceChGain= 3 0.03125 0.03125 0.03125 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= Training_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= 2 2 0 % // how much time in Source visualization
Visualize:Source%20Signal:DataIOFilter int SourceMin= -100muV -100muV % % // raw signal vis Min Value
Visualize:Source%20Signal:DataIOFilter int SourceMax= 100muV 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= 50muV 100muV % % // Amplitude of sine wave
Source:SignalGeneratorADC int NoiseAmplitude= 0muV 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 % % // 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:Documentation:BCI2000FileWriter int SavePrmFile= 0 1 0 1 // save additional parameter file (0=no, 1=yes) (boolean)
Storage:Documentation:BCI2000FileWriter string StorageTime= % // time of beginning of data storage
Source:Alignment:AlignmentFilter int AlignChannels= 0 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= 3 P7 Pz Oz // list of transmitted channels
System:Core%20Connections string SignalSourcePort= 1080 4200 1024 65535 // the SignalSource module's listening port
System:Core%20Connections string SignalSourceIP= *.*.*.* 127.0.0.1 % % // the SignalSource module's listening IP
System:Configuration matrix SignalSourceVersion= { Framework Revision Build } 1 2.x % 18:09:39%20Dec%2021%202010 // 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 int SpatialFilterType= 3 2 0 3 // spatial filter type 0: none, 1: full matrix, 2: sparse matrix, 3: common average reference (CAR) (enumeration)
Filtering:SpatialFilter:SpatialFilter intlist SpatialFilterCAROutput= 0 // list of output channels for the CAR if used
Filtering:SpatialFilter:SpatialFilter matrix SpatialFilter= 3 3 1 0 0 0 1 0 0 0 1 0 % % // columns represent input channels, rows represent output channels
Filtering:P3TemporalFilter int EpochLength= 800ms 500ms 0 % // Length of data epoch from stimulus onset
Filtering:P3TemporalFilter int EpochsToAverage= 1 1 0 % // Number of epochs to average
Visualize:P3TemporalFilter int VisualizeP3TemporalFiltering= 1 0 0 1 // Visualize averaged epochs (0=no 1=yes) (boolean)
Visualize:P3TemporalFilter int TargetERPChannel= 1 1 % % // Input channel for which to display ERP data
Filtering:LinearClassifier matrix Classifier= 2 { input%20channel input%20element%20(bin) output%20channel weight } 1 4 1 1 1 6 2 1 // Linear classification matrix in sparse representation
System:Core%20Connections string SignalProcessingPort= 1082 4200 1024 65535 // the SignalProcessing module's listening port
System:Core%20Connections string SignalProcessingIP= *.*.*.* 127.0.0.1 % % // the SignalProcessing module's listening IP
System:Configuration matrix SignalProcessingVersion= { Framework Revision Build } 1 2.x % 18:20:16%20Dec%2021%202010 // SignalProcessing version information
System:Configuration matrix SignalProcessingFilterChain= 3 { Filter%20Name Position%20String } SpatialFilter 2.A P3TemporalFilter 2.B LinearClassifier 2.C // SignalProcessing filter chain
Visualize:Processing%20Stages int VisualizeSpatialFilter= 0 0 0 1 // Visualize SpatialFilter output (boolean)
Visualize:Processing%20Stages int VisualizeLinearClassifier= 0 0 0 1 // Visualize LinearClassifier 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%%3a%%3aDisplayVisualization int VisualizeApplicationWindow= 0 0 0 1 // Display miniature copy of application window (boolean)
Visualize:Application%20Window:ApplicationBase%%3a%%3aDisplayVisualization int AppWindowSpatialDecimation= 8 8 1 % // Application window decimation (shrinking) factor
Visualize:Application%20Window:ApplicationBase%%3a%%3aDisplayVisualization int AppWindowTemporalDecimation= 4 16 1 % // Application window time decimation factor
Application:Window:ApplicationBase int WindowWidth= 1920 640 0 % // width of application window
Application:Window:ApplicationBase int WindowHeight= 1080 480 0 % // height of application window
Application:Window:ApplicationBase int WindowLeft= 1280 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:Window:StimulusTask string WindowBackgroundColor= 0xFFFFFF 0x505050 % % // background color (color)
Application:Sequencing:StimulusTask float PreRunDuration= 1 1 % % // pause preceding first sequence
Application:Sequencing:StimulusTask float PostRunDuration= 0 0 0 % // pause following last sequence
Application:Sequencing:StimulusTask float PreSequenceDuration= 2s 2s 0 % // pause preceding sequences/sets of intensifications
Application:Sequencing:StimulusTask float PostSequenceDuration= 2s 2s 0 % // pause following sequences/sets of intensifications
Application:Sequencing:StimulusTask float StimulusDuration= 120ms 40ms 0 % // stimulus duration
Application:Sequencing:StimulusTask float ISIMinDuration= 120ms 80ms 0 % // minimum duration of inter-stimulus interval
Application:Sequencing:StimulusTask float ISIMaxDuration= 120ms 80ms 0 % // maximum duration of inter-stimulus interval
Application:Result%20Processing:StimulusTask int InterpretMode= 2 0 0 2 // interpretation of results: 0 none, 1 online free mode, 2 copy mode (enumeration)
Application:Result%20Processing:StimulusTask int DisplayResults= 1 1 0 1 // display results of copy/free spelling (boolean)
Application:Sequencing:P3SpellerTask int NumberOfSequences= 1 15 1 % // number of sequences in a set of intensifications
Application:Speller%20Targets:P3SpellerTask matrix TargetDefinitions= 36 { Display Enter Display%20Size Icon%20File Sound } A A 1 % % B B 1 % % C C 1 % % D D 1 % % E E 1 % % F F 1 % % G G 1 % % H H 1 % % I I 1 % % J J 1 % % K K 1 % % L L 1 % % M M 1 % % N N 1 % % O O 1 % % P P 1 % % Q Q 1 % % R R 1 % % S S 1 % % T T 1 % % U U 1 % % V V 1 % % W W 1 % % X X 1 % % Y Y 1 % % Z Z 1 % % 1 1 1 % % 2 2 1 % % 3 3 1 % % 4 4 1 % % 5 5 1 % % 6 6 1 % % 7 7 1 % % 8 8 1 % % 9 9 1 % % _ %20 1 % % // speller target properties
Application:Speller%20Targets:P3SpellerTask intlist NumMatrixColumns= 1 6 6 1 % // display matrices' column number(s)
Application:Speller%20Targets:P3SpellerTask intlist NumMatrixRows= 1 6 6 0 % // display matrices' row number(s)
Application:Audio%20Stimuli:P3SpellerTask int AudioStimuliOn= 0 0 0 1 // Audio Stimuli Mode (0=no, 1=yes) (boolean)
Application:Audio%20Stimuli:P3SpellerTask matrix AudioStimuliRowsFiles= 6 { filename } ./voice/1.wav ./voice/2.wav ./voice/3.wav ./voice/4.wav ./voice/5.wav ./voice/6.wav // audio stimuli rows files
Application:Audio%20Stimuli:P3SpellerTask matrix AudioStimuliColsFiles= 6 { filename } ./voice/a.wav ./voice/b.wav ./voice/c.wav ./voice/d.wav ./voice/e.wav ./voice/f.wav // audio stimuli column files
Application:Speller%20Targets:P3SpellerTask floatlist TargetWidth= 1 14 0 0 100 // target width in percent of screen width
Application:Speller%20Targets:P3SpellerTask floatlist TargetHeight= 1 14 0 0 100 // target height in percent of screen height
Application:Speller%20Targets:P3SpellerTask floatlist TargetTextHeight= 1 12 0 0 100 // height of target labels in percent of screen height
Application:Speller%20Targets:P3SpellerTask stringlist BackgroundColor= 1 0x000000 0x505050 % % // target background color (color)
Application:Speller%20Targets:P3SpellerTask stringlist TextColor= 1 0x000000 0x505050 % % // text color (color)
Application:Speller%20Targets:P3SpellerTask stringlist TextColorIntensified= 1 0x0000FF 0x505050 % % // intensified text color (color)
Application:Speller%20Targets:P3SpellerTask intlist IconHighlightMode= 1 1 1 0 4 // icon highlight method 0: Show/Hide, 1: Intensify, 2: Grayscale, 3: Invert, 4: Dim (enumeration)
Application:Speller%20Targets:P3SpellerTask floatlist IconHighlightFactor= 1 0.7 0.5 0 % // scale factor for highlighted icon pixel values
Application:Speller:P3SpellerTask int FirstActiveMenu= 1 1 1 % // Index of first active menu
Application:Speller:P3SpellerTask float StatusBarSize= 10 0 0 100 // size of status bar in percent of screen height
Application:Speller:P3SpellerTask float StatusBarTextHeight= 6 0 0 100 // size of status bar text in percent of screen height
Application:Speller:P3SpellerTask string TextToSpell= O // character or string to spell in offline copy mode
Application:Speller:P3SpellerTask string TextResult= % // user spelling result
Application:Speller:P3SpellerTask int TestMode= 0 0 0 1 // select targets by clicking on their associated stimuli (0=no, 1=yes) (boolean)
Application:Speller:P3SpellerTask string DestinationAddress= % // network address for speller output in IP:port format
Application:Text%20Window:P3SpellerTask int TextWindowEnabled= 1 0 0 1 // Show Text Window (0=no, 1=yes) (boolean)
Application:Text%20Window:P3SpellerTask int TextWindowLeft= 640 0 0 % // Text Window X location
Application:Text%20Window:P3SpellerTask int TextWindowTop= 0 0 0 % // Text Window Y location
Application:Text%20Window:P3SpellerTask int TextWindowWidth= 512 512 0 % // Text Window Width
Application:Text%20Window:P3SpellerTask int TextWindowHeight= 512 512 0 % // Text Window Height
Application:Text%20Window:P3SpellerTask string TextWindowFontName= Courier // Text Window Font Name
Application:Text%20Window:P3SpellerTask int TextWindowFontSize= 10 4 1 % // Text Window Font Size
Application:Text%20Window:P3SpellerTask string TextWindowFilePath= % // Path for Saved Text File (directory)
Connector:ConnectorOutput string ConnectorOutputAddress= % 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 } { TIME%20OUT%20!!! Waiting%20to%20start%20... Sleeping--Select%20SLEEP%20twice%20to%20resume Select%20SLEEP%20once%20more%20to%20resume Paused--Select%20PAUSE%20again%20to%20resume } Zeit%20abgelaufen! Warte%20... Angehalten:%20Zweimal%20SLEEP%20f%fcr%20Weiter Angehalten:%20Noch%20einmal%20SLEEP%20f%fcr%20Weiter Angehalten:%20Noch%20einmal%20PAUSE%20f%fcr%20Weiter // Localized user messages
System:Core%20Connections string ApplicationPort= 1084 4200 1024 65535 // the Application module's listening port
System:Core%20Connections string ApplicationIP= *.*.*.* 127.0.0.1 % % // the Application module's listening IP
System:Configuration matrix ApplicationVersion= { Framework Revision Build } 1 2.x % 18:29:09%20Dec%2021%202010 // Application version information
System:Configuration matrix ApplicationFilterChain= 3 { Filter%20Name Position%20String } ConnectorInput 2.9999 P3SpellerTask 3 ConnectorOutput 3.9999 // Application filter chain

mellinger
Posts: 1065
Joined: 12 Feb 2003, 11:06

Post by mellinger » 22 Dec 2010, 11:28

Thanks for reporting this problem. There was an error in the SpatialFilter CAR implementation, which is fixed now. Please get the latest version of the source code, and try again.

Best regards,
Juergen

Locked

Who is online

Users browsing this forum: No registered users and 1 guest