mellinger wrote: 05 Jun 2024, 09:04
I tried running SpectralSignalProcessing and put the entries in the matrix (see below). But channel 4 is not displaying it and I got the new errors "When processing "(Feedback==0)": Variable "Feedback" does not exist". What does it mean and how to fix it?
Go to Filtering->Normalizer->BufferConditions and set the matrix size to 0, 0.
Also, go to Filtering->Normalizer->UpdateTrigger and set it to "0".
I tried running SpectralSignalProcessing and put the entries in the matrix (see below).
You didn't put the entries into the matrix elements that I suggested. You reverted rows and columns.
https://www.youtube.com/watch?v=GxBk-my ... e=youtu.be
Although the Feedback error was gone after adjusting what you showed. It still won't produce any deduction of channel 2 and 3. I tried many things for half a day to figure it out myself, but couldn't fix it. In the unlisted youtube above showing from Launch so you can see the right configurations used (SpatialSignalProcessing, etc). I even deducted channel 2 from channel 1 in channel 4 in case it would be argued they were similar in size so the deduction would be zero. It is not because in the screenshot below. Channel 2 was showing the Netech 10uV waveform after the bipolar was set in g.USBamp Demo (this is after the session in the youtube). Note I even used the original Operator and gUSBAmpSource and channel 4 just won't show the waveforms of deducted channel 2 and 3. What did I miss? I also share the parameter file I used below. If there is a command I miss or something. Hope people with the g.USBamp equipments you know can assist and try to make it run and detected what I missed. Thanks.
exact Parameter I used:
Visualize:Property%20Sets matrix VisPropertySets= 0 1 // row titles are properties in the form "SRCD.Left", columns are property sets
System:Version matrix OperatorVersion= { Framework Revision Build Config Protocol } 1 3.6.8112 8112,%202024-05-04T20:01:23Z MSVC-19.39.33519.0-AMD64,%20release,%202024-05-06T11:07:38Z,%20juergen@Windows11 USE_OPENMP:ON%20USE_PRECOMPILED_HEADERS:ON%20USE_ASSERTS_IN_RELEASE_BUILDS:OFF 2.5 // operator module version information (noedit)(readonly)
System:Protocol int AutoConfig= 1 1 0 1 // Use AutoConfig protocol extension (boolean)
System:Protocol int OperatorBackLink= 1 1 0 1 // Send final state and signal information to Operator (boolean)
System:Core%20Connections string OperatorIP= 127.0.0.1 127.0.0.1 % % // the Operator module's IP (noedit)(readonly)
Storage:Session string SubjectSession= 000 001 % % // three-digit session number
Source:Signal%20Properties int SourceCh= 8 // number of digitized and stored channels (allow_override)
Source:Signal%20Properties int SampleBlockSize= 8 // number of samples transmitted at a time (allow_override)
Source:Signal%20Properties int SamplingRate= 4800 // sampling rate (allow_override)
Source:Signal%20Properties list ChannelNames= 8 1 2 3 4 5 6 7 8 // list of channel names (allow_override)
Source:Signal%20Properties list SourceChOffset= 8 0 0 0 0 0 0 0 0 // Offset for channels in A/D units (allow_override)
Source:Signal%20Properties list SourceChGain= 8 1 1 1 1 1 1 1 1 // gain for each channel (A/D units per physical unit) (allow_override)
Storage:Data%20Location string DataDirectory= ..\data ..\data % % // path to top level data directory (directory)
Storage:Session string SubjectName= Name Name % % // subject alias
Storage:Session string SubjectRun= 00 00 % % // two-digit run number
Storage:Documentation string ID_System= % // BCI2000 System Code
Storage:Documentation string ID_Amp= % // BCI2000 Amp Code
Storage:Documentation string ID_Montage= % // BCI2000 Cap Montage Code
Visualize:Timing int VisualizeTiming= 1 1 0 1 // visualize system timing (0=no, 1=yes) (boolean)
Visualize:Source%20Signal int VisualizeSource= 1 1 0 1 // visualize raw brain signal (0=no, 1=yes) (boolean)
Visualize:Source%20Signal int VisualizeSourceDecimation= 1 auto % % // decimation factor for raw brain signal
Visualize:Source%20Signal int VisualizeSourceBufferSize= auto auto % % // number of blocks to aggregate before sending to operator
Visualize:Source%20Signal int VisualizeSourceTime= 8s 8s 0 % // how much time in Source visualization
Visualize:Source%20Signal int SourceMin= auto // raw signal vis Min Value
Visualize:Source%20Signal int SourceMax= auto // raw signal vis Max Value
Source:gUSBamp int AcquisitionMode= 0 0 0 2 // data acquisition mode: 0: analog signal acquisition, 1: calibration signal, 2: impedance measurement (enumeration)
Source:gUSBamp int CommonGround= 1 0 0 1 // internally connect GNDs from all blocks: 0: false, 1: true (enumeration)
Source:gUSBamp int CommonReference= 0 0 0 1 // internally connect Refs from all blocks: 0: false, 1: true (enumeration)
Source:gUSBamp int EnableDigitalInput= 0 0 0 1 // enable digital inputs (boolean)
Source:gUSBamp int EnableDigitalOutput= 0 0 0 3 // enable digital output on block acquisition: 0: off, 1: use expressions %28after signal acquisition%29, 2: timing test, 3: use expressions %28before signal acquisition%29 (enumeration)
Source:gUSBamp matrix DigitalOutputEx= 0 { Expression } // Matrix of Expressions for digital output
Source:gUSBamp int DetectDataLoss= 0 0 0 1 // use gUSBamp counter mode to detect data loss (boolean)
Source:gUSBamp int NumBuffers= 2 5 2 % // IO queue length
Source:Buffering int SourceBufferSize= 2s 2s % % // size of data acquisition ring buffer (in blocks or seconds)
Source:gUSBamp list DeviceIDs= 1 auto // list of USBamps to be used (or auto)
Source:gUSBamp string DeviceIDMaster= auto // deviceID for the device whose SYNC goes to the slaves
Source:gUSBamp intlist SourceChList= 1 auto // list of channels to digitize, in terms of physical inputs numbered across all devices
Source:gUSBamp intlist SourceChDevices= 1 8 // number of digitized channels per device
Source:gUSBamp int FilterEnabled= 1 1 0 1 // Enable pass band filter (0=no, 1=yes)
Source:gUSBamp float FilterHighPass= 0.5 0.1 0 50 // high pass filter for pass band
Source:gUSBamp float FilterLowPass= 1000 60 0 4000 // low pass filter for pass band
Source:gUSBamp int FilterModelOrder= 8 8 1 12 // filter model order for pass band
Source:gUSBamp int FilterType= 1 1 1 2 // filter type for pass band (1=BUTTERWORTH, 2=CHEBYSHEV)
Source:gUSBamp int NotchEnabled= 0 1 0 1 // Enable notch (0=no, 1=yes)
Source:gUSBamp float NotchHighPass= 58 58 0 70 // high pass filter for notch filter
Source:gUSBamp float NotchLowPass= 62 62 0 4000 // low pass filter for notch filter
Source:gUSBamp int NotchModelOrder= 4 4 1 10 // filter model order for notch filter
Source:gUSBamp int NotchType= 1 1 1 2 // filter type for pass band (1=CHEBYSHEV, 2=BUTTERWORTH)
Storage:BCI2000FileWriter string FileFormat= dat // format of data file (readonly)
Storage:Documentation string StorageTime= % // time of beginning of data storage
Storage:FileSplitting string FileSplittingCondition= % // when to split files, e.g. "1:25:00" or "1.5GB"
Source:Alignment int AlignChannels= 0 0 0 1 // align channels in time (0=no, 1=yes) (boolean)
Source:Alignment floatlist SourceChTimeOffset= 0 0 % % // time offsets for all source channels (may be empty)
Visualize:Processing%20Stages int VisualizeAlignmentFilter= 0 0 0 1 // Visualize AlignmentFilter output (boolean)
Source:Online%20Processing list TransmitChList= 1 * // list of transmitted channels: Channel names may contain * and ? wildcards, and character ranges enclosed in []; wildcard patterns may be negated by prepending an exclamation mark. Ranges of channels may be specified using : or - to separate begin from end.
Visualize:Processing%20Stages int VisualizeTransmissionFilter= 0 0 0 1 // Visualize TransmissionFilter output (boolean)
Storage:Data%20Location string DataFile= $%7bSubjectName%7d$%7bSubjectSession%7d/$%7bSubjectName%7dS$%7bSubjectSession%7dR$%7bSubjectRun%7d.$%7bFileFormat%7d // name of data file relative to DataDirectory
System:RunManager string DataFileShm= /ftJaMIXtWchfSdkJ // name of shared memory object holding data file name (readonly)
System:Protocol int EventLink= 1 1 0 1 // Send events from Operator to Source module (boolean)
System:Core%20Connections string OperatorAddress= 127.0.0.1:4000 // (noedit)
System:Core%20Connections string SignalSourceIP= 127.0.0.1 // (readonly)(noedit)
System:Core%20Connections string SignalSourcePort= 50315 // (readonly)(noedit)
System:Version matrix SignalSourceVersion= { Framework Revision Build Config Protocol } 1 3.6.7385 7385,%202023-05-28T15:26:16Z MSVC-19.33.31629.0-AMD64,%20release,%202023-05-30T17:14:52Z,%20brunnerlab@DESKTOP-3EM2F9K USE_DYNAMIC_CRT:TRUE%20USE_OPENMP:ON%20USE_PRECOMPILED_HEADERS:ON%20USE_ASSERTS_IN_RELEASE_BUILDS:OFF 2.3 // SignalSource version information (noedit)(readonly)
System:Configuration matrix SignalSourceFilterChain= 8 { Filter%20Name Position%20String } DataIOFilter 0 gUSBampADC 1 NullFileWriter 1 BCI2000FileWriter 1 EDFFileWriter 1 GDFFileWriter 1 AlignmentFilter 1.1 TransmissionFilter 1.2 // SignalSource filter chain (noedit)(readonly)
System:Configuration matrix Filters= 17 1 /1/DataIOFilter /1/gUSBampADC /1/BCI2000FileWriter /1/AlignmentFilter /1/TransmissionFilter /2/SpatialFilter /2/SpectralEstimator/WindowingFilter /2/SpectralEstimator/SpectralEstimatorChoice/IdentityFilter /2/SpectralEstimator/SpectralEstimatorChoice/ARSpectrum /2/SpectralEstimator/SpectralEstimatorChoice/FFTSpectrum /2/LinearClassifier /2/LPFilter /2/ExpressionFilter /2/Normalizer /3/ConnectorInput /3/KeystrokeFilter /3/ConnectorOutput // Filter Directory (noedit)(readonly)
Filtering:Windowing int WindowLength= 0.5s 0.5s % % // Length of window
Filtering:Windowing int Detrend= 0 0 0 2 // Detrend data? 0: no, 1: mean, 2: linear (enumeration)
Filtering:Windowing int WindowFunction= 0 0 0 3 // Window function 0: Rectangular, 1: Hamming, 2: Hann, 3: Blackman (enumeration)
Filtering:Spectral%20Estimation float FirstBinCenter= 0Hz 0Hz % % // Center of first frequency bin (in Hz) (allow_override)
Filtering:Spectral%20Estimation float LastBinCenter= 30Hz 30Hz % % // Center of last frequency bin (in Hz) (allow_override)
Filtering:Spectral%20Estimation float BinWidth= 3Hz 3Hz % % // Width of spectral bins (in Hz) (allow_override)
Filtering:Spectral%20Estimation int OutputType= 0 0 0 2 // 0: Spectral Amplitude, 1: Spectral Power, 2: Coefficients (enumeration) (allow_override)
Filtering:AR%20Spectral%20Estimator int ModelOrder= 16 16 0 % // AR model order
Filtering:AR%20Spectral%20Estimator int EvaluationsPerBin= 15 15 1 % // Number of uniformly spaced evaluation points entering into a single bin value
Filtering:Spectral%20Estimation int SpectralEstimator= 1 1 0 2 // Choice of spectral estimation algorithm, 0: None, 1: AR, 2: FFT (enumeration)
Visualize:Processing%20Stages int VisualizeSpatialFilter= 1 0 0 1 // Visualize SpatialFilter output (boolean)
Filtering:SpatialFilter int SpatialFilterType= 1 0 0 3 // spatial filter type 0: none, 1: full matrix, 2: sparse matrix, 3: common average reference (CAR) (enumeration)
Filtering:SpatialFilter matrix SpatialFilter= 8 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 % +1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 % % // columns represent input channels, rows represent output channels
Filtering:SpatialFilter intlist SpatialFilterCAROutput= 0 // when using CAR filter type: list of output channels, or empty for all channels
Filtering:SpatialFilter int SpatialFilterMissingChannels= 1 0 0 1 // how to handle missing channels 0: ignore, 1: report error (enumeration)
Visualize:Processing%20Stages int VisualizeSpectralEstimator= 0 0 0 1 // Visualize SpectralEstimator output (boolean)
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
Visualize:Processing%20Stages int VisualizeLinearClassifier= 0 0 0 1 // Visualize LinearClassifier output (boolean)
Filtering:LPFilter float LPTimeConstant= 0 16s 0 % // time constant for the low pass filter
Visualize:Processing%20Stages int VisualizeLPFilter= 0 0 0 1 // Visualize LPFilter output (boolean)
Filtering:ExpressionFilter string StartRunExpression= % // expression executed on StartRun
Filtering:ExpressionFilter string StopRunExpression= % // expression executed on StopRun
Filtering:ExpressionFilter matrix Expressions= 0 1 // expressions used to compute the output of the ExpressionFilter (rows are channels; empty matrix for none)
Visualize:Processing%20Stages int VisualizeExpressionFilter= 0 0 0 1 // Visualize ExpressionFilter output (boolean)
Filtering:Normalizer floatlist NormalizerOffsets= 2 0 0 0 % % // normalizer offsets
Filtering:Normalizer floatlist NormalizerGains= 2 1 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= 0 0 // expressions corresponding to data buffers (columns correspond to output channels, multiple rows correspond to multiple buffers)
Filtering:Normalizer float BufferLength= 9s 9s % % // time window of past data per buffer that enters into statistic
Filtering:Normalizer string UpdateTrigger= 0 // expression to trigger offset/gain update when changing from 0 (use empty string for continuous update)
Visualize:Processing%20Stages int VisualizeNormalizer= 0 0 0 1 // Visualize Normalizer output (boolean)
System:Core%20Connections string SignalProcessingIP= 127.0.0.1 // (readonly)(noedit)
System:Core%20Connections string SignalProcessingPort= 50350 // (readonly)(noedit)
System:Version matrix SignalProcessingVersion= { Framework Revision Build Config Protocol } 1 3.6.7385 7385,%202023-05-28T15:26:16Z MSVC-19.33.31629.0-AMD64,%20release,%202023-05-30T17:14:52Z,%20brunnerlab@DESKTOP-3EM2F9K USE_DYNAMIC_CRT:TRUE%20USE_OPENMP:ON%20USE_PRECOMPILED_HEADERS:ON%20USE_ASSERTS_IN_RELEASE_BUILDS:OFF 2.3 // SignalProcessing version information (noedit)(readonly)
System:Configuration matrix SignalProcessingFilterChain= 6 { Filter%20Name Position%20String } SpatialFilter 2.B SpectralEstimator 2.C LinearClassifier 2.D LPFilter 2.D1 ExpressionFilter 2.D2 Normalizer 2.E // SignalProcessing filter chain (noedit)(readonly)
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
Application:Human%20Interface%20Devices string KeystrokeStateName= % // State to be translated into keystrokes (0-F), empty for off
Application:Human%20Interface%20Devices string KeystrokeExpression= % // Expression that evaluates to a virtual keycode, empty for off
Application:Human%20Interface%20Devices string KeystrokeExpressionOnStartRun= % // Expression that initializes expression variables on StartRun
Connector:ConnectorOutput string ConnectorOutputAddress= % localhost:20321 % % // one or more IP:Port combinations, e.g. localhost:20321
System:Core%20Connections string ApplicationIP= 127.0.0.1 // (readonly)(noedit)
System:Core%20Connections string ApplicationPort= 50374 // (readonly)(noedit)
System:Version matrix ApplicationVersion= { Framework Revision Build Config Protocol } 1 3.6.7385 7385,%202023-05-28T15:26:16Z MSVC-19.33.31629.0-AMD64,%20release,%202023-05-30T17:14:52Z,%20brunnerlab@DESKTOP-3EM2F9K USE_DYNAMIC_CRT:TRUE%20USE_OPENMP:ON%20USE_PRECOMPILED_HEADERS:ON%20USE_ASSERTS_IN_RELEASE_BUILDS:OFF 2.3 // Application version information (noedit)(readonly)
System:Configuration matrix ApplicationFilterChain= 3 { Filter%20Name Position%20String } ConnectorInput 2.9999 KeystrokeFilter 3.1 ConnectorOutput 3.9999 // Application filter chain (noedit)(readonly)
System:Randomization int RandomSeed= 4962 0 % % // seed for the BCI2000 pseudo random number generator (readonly)
System:Randomization int RandomizationWarning= 1 1 0 1 // warn if subsequent Runs have identical RandomSeed value (boolean)
System:State%20Vector int /StateVectorLength= 25 16 % % // length of the state vector in bytes (noedit)(readonly)