[Solved] Is there a way to code "if... otherwise" ?
I am currently doing a assignment where we have to design a grating adaptation experiment. It goes something like this:
Participant will see a grating (tilted at an angle), participant will press key "z" or "m" to indicate which direction it is tilted. After responding, there is a 0.5 second pause with a blank screen before the next grating is shown. But the grating will only be shown for 3 seconds, after which it will be taken down and the participant can only move to the next grating after responding.
Simplified version:
Grating (3 seconds) -> if key is pressed within 3 seconds, proceed to 0.5s pause.
-> Otherwise, grating removed. Participant have to answer (no time limit). 0.5s pause occur after response
Currently, I am unsure of how to code the programme for the "if... otherwise..." condition. Is there a way to code "if participant respond to grating within 3 seconds, proceed to 0.5 blank screen. Otherwise, remove grating and wait for response"?
Not sure if my question makes any sense. I was really confused by the assignment instructions as well. But much thanks in advance
Comments
Hi @EpicYH22.
I think the problem you're describing does not require an "if... then...else..." as code per se. Rather, I think that what you want to achieve can be done using the objects available in OS.
I put together a basic task to illustrate one way to achieve it. In this task, I present just three trials in which a letter appears on the screen (in yours, it'd be a grading stimulus, of course). A response can be taken during the first 3000 ms after the stimulus appears. If that happens, a 500 ms delay is presented before the next trial. Otherwise, an unlimited time window allows the subject to produce a response, which is followed by a 500ms delay. It can be achieved using presentation of two keyboard objects (one with a 3000 ms duration, and the other infinite) and conditioning the presentation of the second upon the absence of response to the first.
Using this method, if no response is collected by he end of the 3000 ms of the
response1object, the grading stimulus is replaced by the fixation cross and the second keyboard object is presented.Using "Run if" in the
trial_sequence, I make sure that the second fixation cross andkeyboar2only run if no response was collected toresponse1.There are certainly different ways of achieving the same thing, but this way is simple and does not require coding.
You can download my example here:
Hope this helps,
Fabrice.
Thank You @Fab
Thank You so much for your help. I am still new to programming language so I would have never thought of using "[response]=='None' " as a Run if condition. Thank you also for taking your time to create an example for the steps.
This was a lifesaver,
EpicYH22
Hi @EpicYH22,
Glad I could help. All programmers started as beginners ;-)
I started using OS in March and found a lot of useful information reading posts in this forum and going through the documentation on the website. Once you pick up a few principles and tips, things get easier.
Good luck with you experiment!
Fabrice.