Hi,
I am having problem setting the p3speller parameters. What manual should be referred to for getting an understanding of what all the parameters mean and what values should be assigned to each.
The parameter file I am using is as below after the changes made to the MLR matrix as 3 columns and 1 row. I guess I am still missing something which causes the application to crash on suspending or trying to restart the application after a single trial.
Thanks a lot,
Janki.
Filtering int AlignChannels= 1 0 0 1 // align channels in time (0=no, 1=yes)
System string ApplicationIP= 127.0.0.1 127.0.0.1 127.0.0.1 127.0.0. // this module's listening IP
System string ApplicationPort= 2274 4200 1024 32768 // this module's listening port
Storage int AutoIncrementRunNo= 1 1 0 1 // 0: no auto increment 1: auto increment at initialize
P3Speller string BackgroundColor= 0x00000000 0x00505050 0x00000000 0x00000000 // Background Color in hex (0x00BBGGRR)
Filtering int ClassMode= 1 0 1 2 // Classifier mode 1= simple 2= interaction
Source int DCoffset= 0 0 -32767 32767 // DC offset (common to all channels)
System string EEGsourceIP= 127.0.0.1 127.0.0.1 127.0.0.1 127.0.0.1 // this module's listening IP
System string EEGsourcePort= 2272 4200 1024 32768 // this module's listening port
Visualize float ERPMaxDispVal= 30 300 -16383 16384 // Maximum value for ERP display
Visualize float ERPMinDispVal= 0 0 -16383 16384 // Minimum value for ERP display
Storage string FileInitials= c:\ a z 0 // Initials of file name
Localization string Language= Default Default % % // Language for user messages
Localization matrix LocalizedStrings= { German } { TIME%20OUT%20!!! Waiting%20to%20start%20... } Zeit%20abgelaufen! Warte%20... % % % // Localized user messages
Filtering float LR_A= -5.0 -5.0 -100.0 100.0 // Normal Filter Left/Right Intercept
Filtering float LR_B= 5.0 5.0 0.0 100.0 // Normal Filter Left/Right Slope
Filtering int MaxChannels= 256 10 1 256 // maximum number of channels in signals B,C
Filtering int MaxElements= 256 10 1 256 // maximum number of elements in signals B,C
Filtering matrix MLR= 1 3 1 1 0 64 0 100 // Class Filter Left / Right Weights
Source int ModulateAmplitude= 0 0 0 1 // modulate the amplitude with the mouse (0=no, 1=yes)
Filtering matrix MUD= 20 3 1 60 1 1 61 1 1 62 1 1 63 1 1 64 1 1 65 1 1 66 1 1 67 1 1 68 1 1 69 1 1 70 1 1 71 1 1 72 1 1 73 1 1 74 1 1 75 1 1 76 1 1 77 1 1 78 1 1 79 1 64 0 100 // Class Filter Additive Up / Down Weights
Source int NoiseMaxAmplitude= 3000 3000 -32767 32767 // the maximum output value for noise
Source int NoiseMinAmplitude= -3000 0 -32767 32767 // the minimal output value for noise
P3Speller int NumberOfSequences= 15 15 0 100 // Number of sets of 12 intensifications
Filtering int NumControlSignals= 2 1 1 128 // the number of transmitted control signals
P3SignalProcessing int NumERPsToAverage= 15 15 0 1000 // Number of ERPs to average before doing DF
P3SignalProcessing int NumSamplesInERP= 144 144 0 1000 // Number of samples stored for each response
P3Speller int OffTime= 1 10 0 5000 // Interval between intensification in units of SampleBlocks
P3Speller int OnlineMode= 0 0 0 1 // Online mode (0=no, 1=yes)
P3Speller int OnTime= 4 10 0 5000 // Duration of intensification in units of SampleBlocks
P3Speller int PostSetInterval= 60 60 0 10000 // Duration after set of n intensifications in units of SampleBlocks
P3Speller int PreSetInterval= 100 60 0 10000 // Duration before set of n intensifications in units of SampleBlocks
Source int SampleBlockSize= 32 5 1 128 // the number of samples transmitted at a time
Source int SamplingRate= 256 128 1 4000 // the sample rate
Storage int SavePrmFile= 0 1 0 1 // 0: don't save additional parameter file 1: save additional parameter file
System string SignalProcessingIP= 127.0.0.1 127.0.0.1 127.0.0.1 127.0.0.1 // this module's listening IP
System string SignalProcessingPort= 2270 4200 1024 32768 // this module's listening port
Source int SineChannel= 0 0 0 128 // channel number of sinewave for y (0=all)
Source int SineChannelX= 0 0 0 128 // channel number of sinewave for x
Source float SineFrequency= 10 10 0 100 // frequency of the sine wave
Source int SineMaxAmplitude= 10000 20000 -32767 32767 // the maximum output value for sine
Source int SineMinAmplitude= -10000 0 -32767 32767 // the minimal output value for sine
Source int SoftwareCh= 64 16 1 128 // the number of digitized and stored channels
Filtering floatlist SourceChGain= 16 0.033 0.033 0.033 0.033 0.033 0.033 0.033 0.033 0.033 0.033 0.033 0.033 0.033 0.033 0.033 0.033 0.003 -500 500 // gain for each channel (A/D units -> muV)
Filtering floatlist SourceChOffset= 16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -500 500 // offset for channels in A/D units
Visualize int SourceMax= 8092 8092 0 16386 // raw signal vsi Max Value
Visualize int SourceMin= 0 0 -8092 0 // raw signal vis Min Value
Filtering int SpatialFilteredChannels= 1 2 1 64 // Number of Spatially Filtered Channels
Filtering matrix SpatialFilterKernal= 1 1 1 64 -100 100 // Spatial Filter Kernal Weights
System int StateVectorLength= 9 16 1 30 // length of the state vector in bytes
P3Speller int StatusBarSize= 10 0 0 100 // Size of status bar in percent of screen height
P3Speller int StatusBarTextHeight= 4 0 0 100 // Size of status bar text in percent of screen height
Storage string StorageTime= 16:15 Time a z // time of beginning of data storage
Storage string SubjectName= test Name a z // subject alias
Storage string SubjectRun= 00 00 0 99 // digit run number (max. 3 characters)
Storage string SubjectSession= 001 001 0 999 // session number (max. 3 characters)
P3Speller string TargetDefinitionFile= p3targets.cfg 0 0 100 // Target definition file
P3SignalProcessing int TargetERPChannel= 1 1 0 128 // Target Channel for ERP Display in order of SigProc transfer
P3Speller int TargetHeight= 12 0 0 100 // TargetHeight in percent of screen height
P3Speller int TargetTextHeight= 8 0 0 100 // Height of target labels in percent of screen height
P3Speller int TargetWidth= 12 0 0 100 // TargetWidth in percent of screen width
P3Speller string TaskSequence= RSCMTP S M C // Character or string to spell in offline mode
P3Speller string TextColor= 0x00555555 0x00505050 0x00000000 0x00000000 // Text Color in hex (0x00BBGGRR)
P3Speller string TextColorIntensified= 0x00FFFFFF 0x00505050 0x00000000 0x00000000 // Text Color in hex (0x00BBGGRR)
Source int TransmitCh= 1 4 1 128 // the number of transmitted channels
Source intlist TransmitChList= 1 11 1 1 128 // list of transmitted channels (# of channels MUST equal TransmitCh)
Filtering float UD_A= 0 5.0 -100.0 100.0 // Normal Filter Up / Down Intercept
Filtering float UD_B= 10 5.0 -100.0 100.0 // Normal Filter Up / Down Slope
Visualize int VisualizeCalibration= 0 0 0 1 // visualize calibrated channels (0=no, 1=yes)
Visualize int VisualizeClassFiltering= 0 0 0 1 // visualize Class filtered signals (0=no 1=yes)
Visualize int VisualizeNormalFiltering= 0 0 0 1 // visualize Normal filtered signals (0=no 1=yes)
Visualize int VisualizeP3TemporalFiltering= 1 0 0 1 // visualize Temporal filtered signals (0=no 1=yes)
Visualize int VisualizeRoundtrip= 0 1 0 1 // visualize roundtrip time (0=no, 1=yes)
Visualize int VisualizeSource= 1 1 0 1 // visualize raw brain signal (0=no, 1=yes)
Visualize int VisualizeSourceDecimation= 1 1 0 1 // decimation factor for raw brain signal
Visualize int VisualizeSourceTime= 2 2 0 5 // how much time in Source visualization
Visualize int VisualizeSpatialFiltering= 0 0 0 1 // visualize spatial filtered signals (0=no 1=yes)
P3Speller int WinHeight= 512 512 0 2000 // User Window Height
P3Speller int WinWidth= 512 512 0 2000 // User Window Width
P3Speller int WinXpos= 1 0 0 5000 // User Window X location
P3Speller int WinYpos= 1 0 0 5000 // User Window Y location
setting p3speller parameters
-
gschalk
- Posts: 615
- Joined: 28 Jan 2003, 12:37
P3Speller
Hi Janki,
You can get information about the P3Speller from the BCI2000 User Manual (which is on bci2000.org -> Software Project -> Download), from the P300 Tutorial (on SourceSafe). Brendan should also know at least most of the necessary settings.
There are obviously many parameters that have to be defined right to make the speller work correctly with a subject online. For example, signal processing has to be properly configured. If you can't find the information in the sources I mentioned, please list exactly what you are trying to accomplish.
I tried the parameter file with the latest version of the speller, and it works fine for me. I tried to Suspend and Resume a number of times and could not reproduce a crash.
Gerv
You can get information about the P3Speller from the BCI2000 User Manual (which is on bci2000.org -> Software Project -> Download), from the P300 Tutorial (on SourceSafe). Brendan should also know at least most of the necessary settings.
There are obviously many parameters that have to be defined right to make the speller work correctly with a subject online. For example, signal processing has to be properly configured. If you can't find the information in the sources I mentioned, please list exactly what you are trying to accomplish.
I tried the parameter file with the latest version of the speller, and it works fine for me. I tried to Suspend and Resume a number of times and could not reproduce a crash.
Gerv
-
janki
- Posts: 9
- Joined: 14 Jan 2004, 12:03
a further question
Thanks gerv for the link, I'll look into it.
I have one more question, what I have tried to do is extend the P3speller code to have a single row and 6 columns instead of the 6x6 matrix. The way it calculates the selection is by predicting just the column with the highest value rather than the intersection of the row and column. Would a specific change be required to be made for such a change.
Thanks,
Janki.
I have one more question, what I have tried to do is extend the P3speller code to have a single row and 6 columns instead of the 6x6 matrix. The way it calculates the selection is by predicting just the column with the highest value rather than the intersection of the row and column. Would a specific change be required to be made for such a change.
Thanks,
Janki.
-
gschalk
- Posts: 615
- Joined: 28 Jan 2003, 12:37
P3Speller ...
Hi Janki,
Do you mean a change in configuration or a change in the P3Speller code?
You'll have to change the code of the P3Speller to
1) Present only one row
2) Determine the correctly predicted column and disregarding all rows
SignalProcessing does not really know anything about the P3Speller. This is the beauty of BCI2000, in that many things are as independent as possible. The application displays stimuli (in your case, columns), labels the state StimulusCode appropriately (i.e., in your case column 1..6 might be encoded as state StimulusCode 1..6). SignalProcessing then determines classification values for each StimulusCode and sends the results back to Application. Specifically, whenever StimulusCodeRes is > 0, the control signal that is passed to the Application represents the classification value. Thus, you don't really need to configure anything differently.
In any event, signal processing has to be configured to correctly classify the brain signal evoked by your new application. This requires data analysis and corresponding configuration. Please consult the manuals for an overview and Brendan for help on this.
Gerv
Do you mean a change in configuration or a change in the P3Speller code?
You'll have to change the code of the P3Speller to
1) Present only one row
2) Determine the correctly predicted column and disregarding all rows
SignalProcessing does not really know anything about the P3Speller. This is the beauty of BCI2000, in that many things are as independent as possible. The application displays stimuli (in your case, columns), labels the state StimulusCode appropriately (i.e., in your case column 1..6 might be encoded as state StimulusCode 1..6). SignalProcessing then determines classification values for each StimulusCode and sends the results back to Application. Specifically, whenever StimulusCodeRes is > 0, the control signal that is passed to the Application represents the classification value. Thus, you don't really need to configure anything differently.
In any event, signal processing has to be configured to correctly classify the brain signal evoked by your new application. This requires data analysis and corresponding configuration. Please consult the manuals for an overview and Brendan for help on this.
Gerv
Who is online
Users browsing this forum: No registered users and 0 guests
