[open] Corsi Blocks Task - Stopping Rule
Hi,
I'm in desperate need of some help with a stopping rule. I think for most parts I have my basic program working but I am due to start running it in schools very soon and I am yet to work out a stopping rule. Because I'm working with clinical populations with limited time I really can't afford to have each participant run the study until the end if they are failing to get the correct answers.
My task is a Corsi blocks task, participants watch a block sequence play out on a tablet screen and then are required to tap it out in the same order in which they saw it. Effectively they see a skethpad with 9 blank squares, then another in which a black square image has replaced one of the blank squares at target co-ordinates, then another where it has moved to another co-ordinates and so on, creating the impression of a moving sequence.
Participants see two of each sequence length, they see a 2 block length sequence and respond, then another 2 block length sequence and respond, then a three block length sequence and respond, then another three length block sequence and respond, etc up to 9 block length sequences.
Traditionally the task is performed on wooden blocks, and if a participant fails to tap out correctly both of the 2 trials of the same block sequence length then the task stops, so if they get both 2 block length sequences wrong, or two 6 block sequences wrong. If they get either (just one) of the two right however the test carries on as it is assumed that they can complete that length.
I have absolutely no idea how to tell opensesame to recognise this rule or where to even start. I will try to post a picture of my trial sequences etc to give people a better idea but loosely;
This is for a 2 block length sequence,
participants see a sketchpad which draws or inserts, at x and y co-ordinates which I specify in the loop as variables, a blank square image or png. They then see another sketchpad in which at one of the co-ordinates they instead see drawn or inserted a black square image or png replacing what was originally a blank square. This then in a third sketchpad moves to another coordinate replacing the blank square there previously. Finally they see a sketchpad which draws the origninal 9 blank squares of pngs in the 9 different co-ordinates.
(In these skethpads I also have specificed instructions for trial one and trial two, so the first time round it draws the black square at certain co-ordinates and blanks at others (8, blanks, 9 total with the black square), and the second time round this changes, with the black square drawn at another co-ordinate and blanks in the other 8 places.)
I'm not sure whether the next part can be simplified or not but currently I have next a mouse reponse and two pieces of clever inline code which I was kindly helped with that specifies what will be considered a correct or incorrect tap. I have one for the first trial, and one for the second trial but crucially they are for the first tap of each sequence. I have run if trial = commands to tell opensesame which to refer to. This is then logged.
And then another skethpad of the 9 blank squares and a mouse response and the two pieces of incline script but this time for the second tap of each trial, as above, which is again logged to the same output.
For a trial to be considered correct both the first and second tap in it needs to be correct but I currently have these specified at different points.
I have no idea therefore how to get opensesame to understand a stopping rule. All taps in a trial must be correct for it to be a correct trial. There are two trials of each sequence length and if both of them are incorrect (which could be down to just a single tap mistake in both) then the task needs to terminate. If one of the two trials is fully correct however the task must continue.
I am completely stuck and running out of time,
Please HELP! . .
Thank you,
Kat x x
Comments
I also can't seem to upload the image unfortunately
Hi Kat,
From you rather elaborate post, I gather that your experiment should be broken off when a participant fails on two consecutive tries of the same block-tap amounts?
Even though you might be assessing the correctness of each trial in different places in the experiment, you could still save the trial outcome in a variable that is accessible in the rest of the experiment. In general, this would look somewhat like the following snippet:
Then it becomes a simple counting exercise, where at the end of each trial you update the incorrect count:
After two consecutive trials with the same length, you assess the incorrect count and use it to set a variable that tells you whether the experiment should be continued:
In order to use this
stopexp
variable in your experiment, set the Break if statement of all of the loops that are involved in the block tapping to[stopexp] = 1
Now, for the previous inline scripting to work, you will have to preset some variables. At the start of your entire experiment, place the following code in the Prepare phase of an inline_script item:
Where in your experiment you implement this depends on what your actual experiment looks like. I think that you should be able to figure it out, though, seeing how you've managed to get your task running in the first place.
Good luck!
Hi Edwin,
thank you so much for getting back to me, I really wish I could upload a picture on here to show you the layout of my study as currently I cannot get the code you outlined above to work. I am still trying however. My basic layout looks very like the android back end template that opensesame comes with . . if that helps? I have changed it around a lot actually compared to as described above and I think I need to set it out all again really as I'm in desperate need of this rule working and running out of time . .
thank you though,
Kat x
Hi Kat,
To upload images, you can use this website's free image hosting service: http://img.cogsci.nl/
But in general, the outline I gave above should do the trick. It's a simple matter of using the correct variable names in the inline_scripts, and placing these inline_scripts in the correct places.
Good luck!
I think this is the bit that I am struggling most with thank you though, I will keep trying, I'm just not sure exactly where to put them, but I am just going to have t sit down today and really think about it.
Thank you
Kat x
I may have got it to work, I don't want to jinx it, I couldn't get the break if rule to work so I kind of did a run if version instead, run if stopexp = 0 on the different trial loops . . Thank you for your help.
Kat x