[open] General P300 Oddball Presentation
Hi Everyone!
Just wanted to speak up and introduce myself, I am a PhD candidate at the Centre for Intelligent Systems Research in Australia; I am currently working on some P3/ERP oddball paradigms and recently stumbled upon this neat little app.
Just a couple of questions regarding setting up the program, my experiment is as follows:
Visual task requiring the participant to observe a computer screen which will display a target and non-target stimulus images, there is no response mechanism (such as a reaction time switch) implemented as we do not want to activate the motor cortex. The stimulus (target - blue circle) screen is shown a set number of times (50) at random intervals during the test, a non-target screen (red square) is shown as the default image, a fixation point is shown at all other times. The target/stim image can not be shown two consecutive times, also the random timing of the stim target must change each iteration. See below for an example)
At each target/stim screen the software must trigger a parallel port pin which is connected to a NeuroScan SynAmpsRT EEG system. (this is already implemented)
Eg:
Non-Target O(750ms)
Fixation (500ms)
Non-Target O(750ms)
Fixation (500ms)
Target <-
Fixation (500ms)
Non-Target O(750ms)
Fixation (500ms)
Non-Target O(750ms)
Fixation (500ms)
Target
Fixation (500ms)
...(repeat for 6 minutes)
My question is this, can this software generate the random numbers/allocation so that the target/stim screens are not duplicated/shown twice in a row?
Any help will be greatly appreciated
Cheers,
Luke
Comments
wow Luke,
how cool. I am going to hopefully use this software to run a auditory oddball task. I wish I could advise you and or answer your questions. the EEG/ERP doc page has info on triggers for EEG/ERP as well as links to forum. These links address tiggers and connections between eeg equipment and this software. I do not think however, that they will answer you question. I will watching your post closely and hopefully someone will be able to answer your questions.
ITA
We will answer your post as soon as possible!
Did you like my answer? Feel free to
Hi Luke,
You can avoid the target from being presented twice in a row by preparing your trial list at the start of your experiment. This can be achieved by placing something like the following code in an inline_script item at the beginning of your experiment:
Next, to determine whether a given trial is a target or a non-target, append a second inline_script item at the beginning of your trial sequence and place something like the following in its Prepare phase tab:
Finally, prepare your sketchpad items for the target and the non-target like normal. However, set their "Run if" statements in the trial_sequence item to
[trial_type] = target
and[trial_type] = non-target
, respectively.After applying this, your overview area and trial sequence item should look like this:
An example experiment can be downloaded here (download, change the extension to '.opensesame' instead of '.txt' and open as normally):
If you would like to apply more constraints to your trial list, you could try one of the following pseudo-randomisation programs:
I hope this helps!
Best,
Lotje
Did you like my answer? Feel free to
Lotje, you are a champion!
Many thanks for the rather extensive help with the program, I have updated my experiment and it is running beautifully (sans LPT triggers).
One (hopefully) little issue remains, I am running a Win7x32 PC (and an additional W7 x64 system) with a PCI Parallel port card, I have been trawling the internet for a solid method of sending trigger codes via the parallel port through to the SynAmpsRT system with various degrees of failure.
Some say you can, some say you can't; all in all it seems to be a Win7 issue. I had been previously using a custom uController circuit to perform the triggering; which was based on running an Arduino Pro Mini, running the firmata sketch, from this I had been using a small sketch based on the Processing program for the visualisation which triggered the Arduino which triggered the optoisolator circuit connected to the parallel trigger port on the SynAmpsRT system. This worked quite well however I am a little concerned with the temporal accuracy of the triggering circuit as it is isolated from all other interfaces/computers/participants using a series of optoisolators (each with their own timing characteristics, this was to medically isolate the system from the participant and to ensure that any 'direct stimulation' via the electrodes was impossible).
Hence the subsequent trial of OpenSesame . (A far more extendable solution, without the need for time consuming custom/proprietary hardware)
I have attempted to use the examples given in the ERP trigger tutorial however I see in the event window that both the target and non-target triggers are being sent in succession regardless of the visual presentation.
Figure 1 - Debug Window
Figure 2 - Full Screen Shot
Figure 3 - Sequence Image
Am I performing this in the right manner/order? I am not much of a python programmer, but if need be I can learn it, and I can follow code quite well (C, C++, assembly and Matlab are my 'normal' languages).
In the meantime I think I may have to head down to the electronics lab and make a physical parallel port monitor with a few LEDs as I am yet to find any parallel port monitor software which works (robustly) under Windows 7.
Again, thanks for your time Lotje and ajspoerner.
Kind regards,
Luke
Luke and Lotje,
Thank you both so much. I think I get what I need to do. Luke, good luck on your project. Lotje, thank you again for your suggestions.
Kind Regards,
AJ spoerner
Great news, I managed to get the PCIe card working to trigger the SynAmpsRT system however it is only showing one trigger code, not separate codes for target and non-target stimuli. But it's working under Win7 x32 with a PCIe card! Happy days.
Will post how I managed to get it working when I have some spare time (at work atm).
Cheers,
Luke
Hi Luke,
Great that you managed to get this far! If you have information to add for the triggers page, please don't hesitate to post (or add directly).
Could it be that you have placed the code in the prepare phase of the inline_script item? The prepare phase is always executed, regardless of the Run-if statement. Since you really want to send the trigger 'when the action happens', the code should be in the run phase.
Cheers,
Sebastiaan
Check out SigmundAI.eu for our OpenSesame AI assistant!
'var.trial_type == "non"_"target"' is not a valid conditional statement
Can anyone help me?