jm560@sussex.ac.uk
|
|
Group: Forum Members
Posts: 25,
Visits: 208
|
Hi,
My task presents one of three distractors on every trial retrieved from a list. This works well but I am struggling to record which stimulus has been presented on each trial. Currently the task records reaction time for each trial but I need to be able to match that with the distractor type. Any help would be appreciated! Even direction to other resources, I'm not sure how well i understand data recording and 'values' beyond what i've learnt from the online descriptions & simple demos. Relevant code posted below...
<picture food> / items = ("food1.png", "food2.png", "food3.png", "food4.png", "food5.png", "food6.png") / select = noreplace / position = (50%, 50%) / size = (1px * values.imagewidth * expressions.ratio_pxpermm, 1 px * values.imageheight * expressions.ratio_pxpermm) </picture>
<picture nature> / items = ("nature1.png", "nature2.png", "nature3.png", "nature4.png", "nature5.png", "nature6.png") / select = noreplace / size = (1px * values.imagewidth * expressions.ratio_pxpermm, 1 px * values.imageheight * expressions.ratio_pxpermm) </picture>
<picture blank> / items = ("blank.bmp") / select =replace / position = (50%, 50%) </picture>
<list Lowdistractor> / items = (picture.nature, picture.food, picture.blank) / itemprobabilities = (.10, .10, .80) / poolsize = 60 </list>
<values> /distractor = list.Lowdistractor </values>
<trial lowX1> / ontrialbegin = [trial.lowX1.insertstimulustime(list.Lowdistractor.nextvalue,500);] / ontrialend = [trial.lowX1.resetstimulusframes(); ] / stimulustimes = [1=fixation; 500=sequence (fixationcover, XLD1, Ll2filler, Ll3filler, Ll4filler, Ll5filler, Ll6filler); 600=eraseblank] / validresponse = ("0", "2") / correctresponse = ("0") / response = timeout(2000) / beginresponsetime = 500 </trial>
<data> / columns = (date, time, group, subject, trialcode, blockcode, correct, stimulusitem, values.distractor) </data>
Whole script is attached if needed, but obviously will not work without all the stimuli etc.
Thanks! Jenny
|
|
|
Dave
|
|
Group: Administrators
Posts: 13K,
Visits: 105K
|
+xHi, My task presents one of three distractors on every trial retrieved from a list. This works well but I am struggling to record which stimulus has been presented on each trial. Currently the task records reaction time for each trial but I need to be able to match that with the distractor type. Any help would be appreciated! Even direction to other resources, I'm not sure how well i understand data recording and 'values' beyond what i've learnt from the online descriptions & simple demos. Relevant code posted below... <picture food> / items = ("food1.png", "food2.png", "food3.png", "food4.png", "food5.png", "food6.png") / select = noreplace / position = (50%, 50%) / size = (1px * values.imagewidth * expressions.ratio_pxpermm, 1 px * values.imageheight * expressions.ratio_pxpermm) </picture> <picture nature> / items = ("nature1.png", "nature2.png", "nature3.png", "nature4.png", "nature5.png", "nature6.png") / select = noreplace / size = (1px * values.imagewidth * expressions.ratio_pxpermm, 1 px * values.imageheight * expressions.ratio_pxpermm) </picture> <picture blank> / items = ("blank.bmp") / select =replace / position = (50%, 50%) </picture> <list Lowdistractor> / items = (picture.nature, picture.food, picture.blank) / itemprobabilities = (.10, .10, .80) / poolsize = 60 </list> <values> /distractor = list.Lowdistractor </values> <trial lowX1> / ontrialbegin = [trial.lowX1.insertstimulustime(list.Lowdistractor.nextvalue,500);] / ontrialend = [trial.lowX1.resetstimulusframes(); ] / stimulustimes = [1=fixation; 500=sequence (fixationcover, XLD1, Ll2filler, Ll3filler, Ll4filler, Ll5filler, Ll6filler); 600=eraseblank] / validresponse = ("0", "2") / correctresponse = ("0") / response = timeout(2000) / beginresponsetime = 500 </trial> <data> / columns = (date, time, group, subject, trialcode, blockcode, correct, stimulusitem, values.distractor) </data> Whole script is attached if needed, but obviously will not work without all the stimuli etc. Thanks! Jenny <values> /distractor = list.Lowdistractor</values> ^this does not make sense and will not work. list.lowdistractor returns nothing. Moreover, you're not updating the value anywhere, whereas you'll want to do that on a trial-by-trial basis. In other words, you'll want to do something like this if you want to capture which distractor <picture> element was selected on a given trial: <trial lowX1> / ontrialbegin = [trial.lowX1.insertstimulustime(list.Lowdistractor.nextvalue,500);] / ontrialbegin = [values.distractor = list.Lowdistractor.currentvalue;]/ ontrialend = [trial.lowX1.resetstimulusframes(); ] / stimulustimes = [1=fixation; 500=sequence (fixationcover, XLD1, Ll2filler, Ll3filler, Ll4filler, Ll5filler, Ll6filler); 600=eraseblank] / validresponse = ("0", "2") / correctresponse = ("0") / response = timeout(2000) / beginresponsetime = 500 </trial>
|
|
|
jm560@sussex.ac.uk
|
|
Group: Forum Members
Posts: 25,
Visits: 208
|
+x+xHi, My task presents one of three distractors on every trial retrieved from a list. This works well but I am struggling to record which stimulus has been presented on each trial. Currently the task records reaction time for each trial but I need to be able to match that with the distractor type. Any help would be appreciated! Even direction to other resources, I'm not sure how well i understand data recording and 'values' beyond what i've learnt from the online descriptions & simple demos. Relevant code posted below... <picture food> / items = ("food1.png", "food2.png", "food3.png", "food4.png", "food5.png", "food6.png") / select = noreplace / position = (50%, 50%) / size = (1px * values.imagewidth * expressions.ratio_pxpermm, 1 px * values.imageheight * expressions.ratio_pxpermm) </picture> <picture nature> / items = ("nature1.png", "nature2.png", "nature3.png", "nature4.png", "nature5.png", "nature6.png") / select = noreplace / size = (1px * values.imagewidth * expressions.ratio_pxpermm, 1 px * values.imageheight * expressions.ratio_pxpermm) </picture> <picture blank> / items = ("blank.bmp") / select =replace / position = (50%, 50%) </picture> <list Lowdistractor> / items = (picture.nature, picture.food, picture.blank) / itemprobabilities = (.10, .10, .80) / poolsize = 60 </list> <values> /distractor = list.Lowdistractor </values> <trial lowX1> / ontrialbegin = [trial.lowX1.insertstimulustime(list.Lowdistractor.nextvalue,500);] / ontrialend = [trial.lowX1.resetstimulusframes(); ] / stimulustimes = [1=fixation; 500=sequence (fixationcover, XLD1, Ll2filler, Ll3filler, Ll4filler, Ll5filler, Ll6filler); 600=eraseblank] / validresponse = ("0", "2") / correctresponse = ("0") / response = timeout(2000) / beginresponsetime = 500 </trial> <data> / columns = (date, time, group, subject, trialcode, blockcode, correct, stimulusitem, values.distractor) </data> Whole script is attached if needed, but obviously will not work without all the stimuli etc. Thanks! Jenny <values> /distractor = list.Lowdistractor</values> ^this does not make sense and will not work. list.lowdistractor returns nothing. Moreover, you're not updating the value anywhere, whereas you'll want to do that on a trial-by-trial basis. In other words, you'll want to do something like this if you want to capture which distractor <picture> element was selected on a given trial: <trial lowX1> / ontrialbegin = [trial.lowX1.insertstimulustime(list.Lowdistractor.nextvalue,500);] / ontrialbegin = [values.distractor = list.Lowdistractor.currentvalue;]/ ontrialend = [trial.lowX1.resetstimulusframes(); ] / stimulustimes = [1=fixation; 500=sequence (fixationcover, XLD1, Ll2filler, Ll3filler, Ll4filler, Ll5filler, Ll6filler); 600=eraseblank] / validresponse = ("0", "2") / correctresponse = ("0") / response = timeout(2000) / beginresponsetime = 500 </trial> Hi, this worked perfectly when I changed it but I think I may need help once more on this script! The script had before had 3 different stimulus categories which were selected from a list. See below <list Lowdistractor> / items = (picture.nature, picture.food, picture.blank) / itemprobabilities = (.10, .10, .80) / poolsize = 60 </list> I've had to change the script so that I can have different sizes for each image. I.e. Separate picture element for each stimulus image so I can change the size easily instead of having images from the same category in the same picture element like before. <picture nature5> / items = ("nature5.png") / select = noreplace / size = (1px * values.greenwidth * expressions.ratio_pxpermm, 1 px * values.greenheight * expressions.ratio_pxpermm) </picture> Which means the list now looks like this <list Lowdistractor> / items = (picture.nature1, picture.nature2, picture.nature3, picture.nature4, picture.nature5, picture.nature6, picture.food1, picture.food2, picture.food3, picture.food4, picture.food5, picture.food6, shape.blank) / itemprobabilities = (.0166666666667, .0166666666667, .0166666666667, .0166666666667, .0166666666667, .0166666666667, .0166666666667, .0166666666667, .0166666666667, .0166666666667, .0166666666667, .0166666666667,.80) / poolsize = 60 </list> This still works fine but I don't want to record each image individually. So I want to record the trials where nature1, 2, 3, 4, 5 and 6 are presented as a combined group I.e. Just an overall Nature category. The same for food. Is there a way of combining these for the data recording? I thought it might work to have a second superordinate list but i can't get that to work either. I've copied what I tried below... <list nature> / items = (picture.nature1, picture.nature2, picture.nature3, picture.nature4, picture.nature5, picture.nature6) / itemprobabilities = (.166666666667, .166666666667, .166666666667, .166666666667, .166666666667, .166666666667) / poolsize = 6 </list> <list food> / items = (picture.food1, picture.food2, picture.food3, picture.food4, picture.food5, picture.food6) / itemprobabilities = (.166666666667, .166666666667, .166666666667, .166666666667, .166666666667, .166666666667) / poolsize = 6 </list> <list Lowdistractor> / items = (list.food, list.nature, shape.blank) / itemprobabilities = (.10, .10, .80) / poolsize = 60 </list> Any ideas would be greatly appreciated! Thanks, Jenny
|
|
|
Dave
|
|
Group: Administrators
Posts: 13K,
Visits: 105K
|
+x+x+xHi, My task presents one of three distractors on every trial retrieved from a list. This works well but I am struggling to record which stimulus has been presented on each trial. Currently the task records reaction time for each trial but I need to be able to match that with the distractor type. Any help would be appreciated! Even direction to other resources, I'm not sure how well i understand data recording and 'values' beyond what i've learnt from the online descriptions & simple demos. Relevant code posted below... <picture food> / items = ("food1.png", "food2.png", "food3.png", "food4.png", "food5.png", "food6.png") / select = noreplace / position = (50%, 50%) / size = (1px * values.imagewidth * expressions.ratio_pxpermm, 1 px * values.imageheight * expressions.ratio_pxpermm) </picture> <picture nature> / items = ("nature1.png", "nature2.png", "nature3.png", "nature4.png", "nature5.png", "nature6.png") / select = noreplace / size = (1px * values.imagewidth * expressions.ratio_pxpermm, 1 px * values.imageheight * expressions.ratio_pxpermm) </picture> <picture blank> / items = ("blank.bmp") / select =replace / position = (50%, 50%) </picture> <list Lowdistractor> / items = (picture.nature, picture.food, picture.blank) / itemprobabilities = (.10, .10, .80) / poolsize = 60 </list> <values> /distractor = list.Lowdistractor </values> <trial lowX1> / ontrialbegin = [trial.lowX1.insertstimulustime(list.Lowdistractor.nextvalue,500);] / ontrialend = [trial.lowX1.resetstimulusframes(); ] / stimulustimes = [1=fixation; 500=sequence (fixationcover, XLD1, Ll2filler, Ll3filler, Ll4filler, Ll5filler, Ll6filler); 600=eraseblank] / validresponse = ("0", "2") / correctresponse = ("0") / response = timeout(2000) / beginresponsetime = 500 </trial> <data> / columns = (date, time, group, subject, trialcode, blockcode, correct, stimulusitem, values.distractor) </data> Whole script is attached if needed, but obviously will not work without all the stimuli etc. Thanks! Jenny <values> /distractor = list.Lowdistractor</values> ^this does not make sense and will not work. list.lowdistractor returns nothing. Moreover, you're not updating the value anywhere, whereas you'll want to do that on a trial-by-trial basis. In other words, you'll want to do something like this if you want to capture which distractor <picture> element was selected on a given trial: <trial lowX1> / ontrialbegin = [trial.lowX1.insertstimulustime(list.Lowdistractor.nextvalue,500);] / ontrialbegin = [values.distractor = list.Lowdistractor.currentvalue;]/ ontrialend = [trial.lowX1.resetstimulusframes(); ] / stimulustimes = [1=fixation; 500=sequence (fixationcover, XLD1, Ll2filler, Ll3filler, Ll4filler, Ll5filler, Ll6filler); 600=eraseblank] / validresponse = ("0", "2") / correctresponse = ("0") / response = timeout(2000) / beginresponsetime = 500 </trial> Hi, this worked perfectly when I changed it but I think I may need help once more on this script! The script had before had 3 different stimulus categories which were selected from a list. See below <list Lowdistractor> / items = (picture.nature, picture.food, picture.blank) / itemprobabilities = (.10, .10, .80) / poolsize = 60 </list> I've had to change the script so that I can have different sizes for each image. I.e. Separate picture element for each stimulus image so I can change the size easily instead of having images from the same category in the same picture element like before. <picture nature5> / items = ("nature5.png") / select = noreplace / size = (1px * values.greenwidth * expressions.ratio_pxpermm, 1 px * values.greenheight * expressions.ratio_pxpermm) </picture> Which means the list now looks like this <list Lowdistractor> / items = (picture.nature1, picture.nature2, picture.nature3, picture.nature4, picture.nature5, picture.nature6, picture.food1, picture.food2, picture.food3, picture.food4, picture.food5, picture.food6, shape.blank) / itemprobabilities = (.0166666666667, .0166666666667, .0166666666667, .0166666666667, .0166666666667, .0166666666667, .0166666666667, .0166666666667, .0166666666667, .0166666666667, .0166666666667, .0166666666667,.80) / poolsize = 60 </list> This still works fine but I don't want to record each image individually. So I want to record the trials where nature1, 2, 3, 4, 5 and 6 are presented as a combined group I.e. Just an overall Nature category. The same for food. Is there a way of combining these for the data recording? I thought it might work to have a second superordinate list but i can't get that to work either. I've copied what I tried below... <list nature> / items = (picture.nature1, picture.nature2, picture.nature3, picture.nature4, picture.nature5, picture.nature6) / itemprobabilities = (.166666666667, .166666666667, .166666666667, .166666666667, .166666666667, .166666666667) / poolsize = 6 </list> <list food> / items = (picture.food1, picture.food2, picture.food3, picture.food4, picture.food5, picture.food6) / itemprobabilities = (.166666666667, .166666666667, .166666666667, .166666666667, .166666666667, .166666666667) / poolsize = 6 </list> <list Lowdistractor> / items = (list.food, list.nature, shape.blank) / itemprobabilities = (.10, .10, .80) / poolsize = 60 </list> Any ideas would be greatly appreciated! Thanks, Jenny It seems to me that you should be able to determine the category from the list item selected, store that in a value and then log that value to the data file. In essence: <list lowdistractor> / items = (text.nature1, text.nature2, text.food1, text.food2) / itemprobabilities = (0.1, 0.1, 0.4, 0.4) / poolsize = 10 </list> <trial mytrial> / ontrialbegin = [ trial.mytrial.insertstimulusframe(list.lowdistractor.nextvalue, 1) ] / ontrialbegin = [ if (contains(list.lowdistractor.currentvalue, "nature")) values.category = "nature"; else if (contains(list.lowdistractor.currentvalue, "food")) values.category = "food"; else values.category = "blank"; ]/ validresponse = (57) </trial> <block myblock> / trials = [1-10 = mytrial] </block> <text nature1> / items = ("n1") / size = (10%,10%) </text> <text nature2> / items = ("n2") / size = (10%,10%) </text> <text food1> / items = ("f1") / size = (10%,10%) </text> <text food2> / items = ("f2") / size = (10%,10%) </text> <values> / category = "" </values> <data> / columns = [ subject trialnum trialcode list.lowdistractor.currentvalue values.category] / separatefiles = true </data>
|
|
|
jm560@sussex.ac.uk
|
|
Group: Forum Members
Posts: 25,
Visits: 208
|
+x+x+x+xHi, My task presents one of three distractors on every trial retrieved from a list. This works well but I am struggling to record which stimulus has been presented on each trial. Currently the task records reaction time for each trial but I need to be able to match that with the distractor type. Any help would be appreciated! Even direction to other resources, I'm not sure how well i understand data recording and 'values' beyond what i've learnt from the online descriptions & simple demos. Relevant code posted below... <picture food> / items = ("food1.png", "food2.png", "food3.png", "food4.png", "food5.png", "food6.png") / select = noreplace / position = (50%, 50%) / size = (1px * values.imagewidth * expressions.ratio_pxpermm, 1 px * values.imageheight * expressions.ratio_pxpermm) </picture> <picture nature> / items = ("nature1.png", "nature2.png", "nature3.png", "nature4.png", "nature5.png", "nature6.png") / select = noreplace / size = (1px * values.imagewidth * expressions.ratio_pxpermm, 1 px * values.imageheight * expressions.ratio_pxpermm) </picture> <picture blank> / items = ("blank.bmp") / select =replace / position = (50%, 50%) </picture> <list Lowdistractor> / items = (picture.nature, picture.food, picture.blank) / itemprobabilities = (.10, .10, .80) / poolsize = 60 </list> <values> /distractor = list.Lowdistractor </values> <trial lowX1> / ontrialbegin = [trial.lowX1.insertstimulustime(list.Lowdistractor.nextvalue,500);] / ontrialend = [trial.lowX1.resetstimulusframes(); ] / stimulustimes = [1=fixation; 500=sequence (fixationcover, XLD1, Ll2filler, Ll3filler, Ll4filler, Ll5filler, Ll6filler); 600=eraseblank] / validresponse = ("0", "2") / correctresponse = ("0") / response = timeout(2000) / beginresponsetime = 500 </trial> <data> / columns = (date, time, group, subject, trialcode, blockcode, correct, stimulusitem, values.distractor) </data> Whole script is attached if needed, but obviously will not work without all the stimuli etc. Thanks! Jenny <values> /distractor = list.Lowdistractor</values> ^this does not make sense and will not work. list.lowdistractor returns nothing. Moreover, you're not updating the value anywhere, whereas you'll want to do that on a trial-by-trial basis. In other words, you'll want to do something like this if you want to capture which distractor <picture> element was selected on a given trial: <trial lowX1> / ontrialbegin = [trial.lowX1.insertstimulustime(list.Lowdistractor.nextvalue,500);] / ontrialbegin = [values.distractor = list.Lowdistractor.currentvalue;]/ ontrialend = [trial.lowX1.resetstimulusframes(); ] / stimulustimes = [1=fixation; 500=sequence (fixationcover, XLD1, Ll2filler, Ll3filler, Ll4filler, Ll5filler, Ll6filler); 600=eraseblank] / validresponse = ("0", "2") / correctresponse = ("0") / response = timeout(2000) / beginresponsetime = 500 </trial> Hi, this worked perfectly when I changed it but I think I may need help once more on this script! The script had before had 3 different stimulus categories which were selected from a list. See below <list Lowdistractor> / items = (picture.nature, picture.food, picture.blank) / itemprobabilities = (.10, .10, .80) / poolsize = 60 </list> I've had to change the script so that I can have different sizes for each image. I.e. Separate picture element for each stimulus image so I can change the size easily instead of having images from the same category in the same picture element like before. <picture nature5> / items = ("nature5.png") / select = noreplace / size = (1px * values.greenwidth * expressions.ratio_pxpermm, 1 px * values.greenheight * expressions.ratio_pxpermm) </picture> Which means the list now looks like this <list Lowdistractor> / items = (picture.nature1, picture.nature2, picture.nature3, picture.nature4, picture.nature5, picture.nature6, picture.food1, picture.food2, picture.food3, picture.food4, picture.food5, picture.food6, shape.blank) / itemprobabilities = (.0166666666667, .0166666666667, .0166666666667, .0166666666667, .0166666666667, .0166666666667, .0166666666667, .0166666666667, .0166666666667, .0166666666667, .0166666666667, .0166666666667,.80) / poolsize = 60 </list> This still works fine but I don't want to record each image individually. So I want to record the trials where nature1, 2, 3, 4, 5 and 6 are presented as a combined group I.e. Just an overall Nature category. The same for food. Is there a way of combining these for the data recording? I thought it might work to have a second superordinate list but i can't get that to work either. I've copied what I tried below... <list nature> / items = (picture.nature1, picture.nature2, picture.nature3, picture.nature4, picture.nature5, picture.nature6) / itemprobabilities = (.166666666667, .166666666667, .166666666667, .166666666667, .166666666667, .166666666667) / poolsize = 6 </list> <list food> / items = (picture.food1, picture.food2, picture.food3, picture.food4, picture.food5, picture.food6) / itemprobabilities = (.166666666667, .166666666667, .166666666667, .166666666667, .166666666667, .166666666667) / poolsize = 6 </list> <list Lowdistractor> / items = (list.food, list.nature, shape.blank) / itemprobabilities = (.10, .10, .80) / poolsize = 60 </list> Any ideas would be greatly appreciated! Thanks, Jenny It seems to me that you should be able to determine the category from the list item selected, store that in a value and then log that value to the data file. In essence: <list lowdistractor> / items = (text.nature1, text.nature2, text.food1, text.food2) / itemprobabilities = (0.1, 0.1, 0.4, 0.4) / poolsize = 10 </list> <trial mytrial> / ontrialbegin = [ trial.mytrial.insertstimulusframe(list.lowdistractor.nextvalue, 1) ] / ontrialbegin = [ if (contains(list.lowdistractor.currentvalue, "nature")) values.category = "nature"; else if (contains(list.lowdistractor.currentvalue, "food")) values.category = "food"; else values.category = "blank"; ]/ validresponse = (57) </trial> <block myblock> / trials = [1-10 = mytrial] </block> <text nature1> / items = ("n1") / size = (10%,10%) </text> <text nature2> / items = ("n2") / size = (10%,10%) </text> <text food1> / items = ("f1") / size = (10%,10%) </text> <text food2> / items = ("f2") / size = (10%,10%) </text> <values> / category = "" </values> <data> / columns = [ subject trialnum trialcode list.lowdistractor.currentvalue values.category] / separatefiles = true </data> Thank you so much!
|
|
|