Dave
|
|
Group: Administrators
Posts: 13K,
Visits: 104K
|
+x+x+x+x+x+x+x+x+x+xHi, Working on an experiment where I want to test participants' memory for only items seen during the experiment. Let's say I have a list of words that is 10 items long. However, participants only view 5 of them during the experiment. Is there a way to indicate in my memory test trial/block to only show the 5 words seen during the experiment? These 5 words would be unique for each participant. Thanks! You can write the shown words to an empty <item> element at runtime and then use that in the recall part as needed. <expt> / blocks = [1=show5; 2=recall] </expt> <block show5> / trials = [1-5 = show] </block> <block recall> / preinstructions = (recallpage) </block> <page recallpage> ^You were shown the following 5 words: <%item.shownwords.item(1)%>, <%item.shownwords.item(2)%>, <%item.shownwords.item(3)%>, <%item.shownwords.item(4)%>, and <%item.shownwords.item(5)%>. </page> <trial show> / ontrialend = [ item.shownwords.appenditem(text.word.currentitem); ] / stimulusframes = [1=word] / validresponse = (0) / trialduration = 2500 / posttrialpause = 500 </trial> <text word> / items = words </text> <item words> / 1 = "Apple" / 2 = "Bird" / 3 = "Cloth" / 4 = "Dam" / 5 = "East" / 6 = "Frost" / 7 = "Gain" / 8 = "Hope" / 9 = "Island" </item> <item shownwords> </item> Thank you so much! I understand how the code you sent is working, however I am struggling to implement it in a trial/block fashion (rather than putting the "shown words" in the instructions). For example, if my memory trial looked like: <trial memorytask> / stimulustimes = [0 =scene1_1, scene2_2, word] / validresponse = ("m", "n") / posttrialpause = 500 / timeout = 5000 / beginresponsetime = 0 </trial> <block memory> / trials = [1-5 = memorytask] </block> The task is for participants to match the words they have seen in the experiment (from a large word pool) to the picture (scene 1 or 2) it was paired with. I am having difficulty modifying the code to only show the shown words, as opposed to all of them. Thanks again!! The shown words are stored in an item element. You use this <item> element just like any other. I.e. set up a <text> element referencing that <item> element and have a <trial> display that. <text shownword> / items = shownwords </text> <item shownwords> </item> <trial memorytask> / stimulustimes = [0 =scene1_1, scene2_2, shownword] / validresponse = ("m", "n") / posttrialpause = 500 / timeout = 5000 / beginresponsetime = 0 </trial> <block memory> / trials = [1-5 = memorytask] </block> Ah, I forgot to add the text element. Thank you! To follow-up: during the first part of the experiment, a word is paired with either a park or a market scene. During the memory test I am testing whether they remember that association. Is there a way in inquisit to mark whether they are correct or not based on the actual pairing during the first part? For example, if the word was paired with park and they chose park in the test, that would be marked correct. Right now, it marks any response as correct and I would have to manually go back and check the original pairing. Here is some code below (excluding some naming of items). <text shownword> / items = shownwords </text> <item shownwords> </item> <trial scene1> / ontrialend = [ item.shownwords.appenditem(text.noun.currentitem); ] / stimulustimes = [0 =park, word; 3000 = blank] / posttrialpause = 1000 / trialduration = 4000 / responseinterrupt = frames / beginresponsetime = 0 </trial> <trial scene2> / ontrialend = [ item.shownwords.appenditem(text.noun.currentitem); ] / stimulustimes = [0=market, word; 3000 = blank] / posttrialpause = 1000 / trialduration = 4000 / responseinterrupt = frames / beginresponsetime = 0 </trial> <trial memorytask> / stimulustimes = [0 =park, market, shownword] / validresponse = ("m", "n") / posttrialpause = 500 / timeout = 5000 / beginresponsetime = 0 </trial> <block memory> / trials = [1-5 = memorytask] </block> It's possible in much the same way you already store the shown words. Simply store the paired scene type in the same way. You can then evaluate the correctness in the memory part by pulling up the paired scene type in /iscorrectresponse. I would give you a running example, but the code snippet you provided is not useful or complete enough for me to do so. It's not even clear which response -- "m" or "n" -- maps to park and market respectively I apologize for the unhelpful code! Please see attached for expanded code, as an example would be useful if you are able. For the memory test, an "n" response is for park, and an "m" response is for market. It does not matter what response they made when they first saw the image, but rather just what image the word was paired with. If this is still unhelpful I can try to figure it out based on what you provided. Thank you very much!! Thanks. Here's how you can achieve what you want. (1) Add another empty <item> element to the script to store the paired scene type for each word. <item pairedscene> </item> (2) Add either "n" or "m" to that <item> element ,depending on the type of show trial: <trial parks> / ontrialend = [ item.shownwords.appenditem(text.noun.currentitem); item.pairedscene.appenditem("n");] / stimulustimes = [0 =park, noun; 3000 = blank] / posttrialpause = 1000 / trialduration = 4000 / responseinterrupt = frames / beginresponsetime = 0 </trial> <trial markets> / ontrialend = [ item.shownwords.appenditem(text.noun.currentitem); item.pairedscene.appenditem("m");] / stimulustimes = [0=market, noun; 3000 = blank] / posttrialpause = 1000 / trialduration = 4000 / responseinterrupt = frames / beginresponsetime = 0 </trial> (3) Add the following /iscorrectresponse logic to your source <trial> <trial source> / stimulustimes = [0 =scene1_1, scene2_2, shownword] / validresponse = ("m", "n") / iscorrectresponse = [ computer.scancodetochar(trial.source.response)==item.pairedscene.item(text.shownword.currentindex); ]/ posttrialpause = 500 / timeout = 5000 / beginresponsetime = 0 </trial> Thank you so much for this, and it works great in inquisit 5! However, when I run this exact same code in inquisit 6 web it no longer works. I received the error "'computer.scancodetochar(trial.source.response)==item.pairedword.item(text.shownword.currentindex)' An argument with an invalid value was passed to a function." Additionally, I received "This command is obsolete and will be ignored." Unfortunately, I do not have a inquisit 6 lab license, so it is difficult to test this out more specifically. Does this code no longer work with inquisit 6? If so, is there a way to do the same thing in inquisit 6? Thank you!! Change <trial source> / stimulustimes = [0 =scene1_1, scene2_2, shownword] / validresponse = ("m", "n") / iscorrectresponse = [ computer.scancodetochar(trial.source.response)==item.pairedscene.item( text.shownword.currentindex); ] / posttrialpause = 500 / timeout = 5000 / beginresponsetime = 0 </trial to <trial source> / stimulustimes = [0 =scene1_1, scene2_2, shownword] / validresponse = ("m", "n") / iscorrectresponse = [ computer.scancodetochar(trial.source.response)==item.pairedscene.item( text.shownword.currentitemnumber); ] / posttrialpause = 500 / timeout = 5000 / beginresponsetime = 0 </trial> and it should work.
|
|
|
lir1995
|
|
Group: Forum Members
Posts: 44,
Visits: 201
|
+x+x+x+x+x+x+x+x+x+x+xHi, Working on an experiment where I want to test participants' memory for only items seen during the experiment. Let's say I have a list of words that is 10 items long. However, participants only view 5 of them during the experiment. Is there a way to indicate in my memory test trial/block to only show the 5 words seen during the experiment? These 5 words would be unique for each participant. Thanks! You can write the shown words to an empty <item> element at runtime and then use that in the recall part as needed. <expt> / blocks = [1=show5; 2=recall] </expt> <block show5> / trials = [1-5 = show] </block> <block recall> / preinstructions = (recallpage) </block> <page recallpage> ^You were shown the following 5 words: <%item.shownwords.item(1)%>, <%item.shownwords.item(2)%>, <%item.shownwords.item(3)%>, <%item.shownwords.item(4)%>, and <%item.shownwords.item(5)%>. </page> <trial show> / ontrialend = [ item.shownwords.appenditem(text.word.currentitem); ] / stimulusframes = [1=word] / validresponse = (0) / trialduration = 2500 / posttrialpause = 500 </trial> <text word> / items = words </text> <item words> / 1 = "Apple" / 2 = "Bird" / 3 = "Cloth" / 4 = "Dam" / 5 = "East" / 6 = "Frost" / 7 = "Gain" / 8 = "Hope" / 9 = "Island" </item> <item shownwords> </item> Thank you so much! I understand how the code you sent is working, however I am struggling to implement it in a trial/block fashion (rather than putting the "shown words" in the instructions). For example, if my memory trial looked like: <trial memorytask> / stimulustimes = [0 =scene1_1, scene2_2, word] / validresponse = ("m", "n") / posttrialpause = 500 / timeout = 5000 / beginresponsetime = 0 </trial> <block memory> / trials = [1-5 = memorytask] </block> The task is for participants to match the words they have seen in the experiment (from a large word pool) to the picture (scene 1 or 2) it was paired with. I am having difficulty modifying the code to only show the shown words, as opposed to all of them. Thanks again!! The shown words are stored in an item element. You use this <item> element just like any other. I.e. set up a <text> element referencing that <item> element and have a <trial> display that. <text shownword> / items = shownwords </text> <item shownwords> </item> <trial memorytask> / stimulustimes = [0 =scene1_1, scene2_2, shownword] / validresponse = ("m", "n") / posttrialpause = 500 / timeout = 5000 / beginresponsetime = 0 </trial> <block memory> / trials = [1-5 = memorytask] </block> Ah, I forgot to add the text element. Thank you! To follow-up: during the first part of the experiment, a word is paired with either a park or a market scene. During the memory test I am testing whether they remember that association. Is there a way in inquisit to mark whether they are correct or not based on the actual pairing during the first part? For example, if the word was paired with park and they chose park in the test, that would be marked correct. Right now, it marks any response as correct and I would have to manually go back and check the original pairing. Here is some code below (excluding some naming of items). <text shownword> / items = shownwords </text> <item shownwords> </item> <trial scene1> / ontrialend = [ item.shownwords.appenditem(text.noun.currentitem); ] / stimulustimes = [0 =park, word; 3000 = blank] / posttrialpause = 1000 / trialduration = 4000 / responseinterrupt = frames / beginresponsetime = 0 </trial> <trial scene2> / ontrialend = [ item.shownwords.appenditem(text.noun.currentitem); ] / stimulustimes = [0=market, word; 3000 = blank] / posttrialpause = 1000 / trialduration = 4000 / responseinterrupt = frames / beginresponsetime = 0 </trial> <trial memorytask> / stimulustimes = [0 =park, market, shownword] / validresponse = ("m", "n") / posttrialpause = 500 / timeout = 5000 / beginresponsetime = 0 </trial> <block memory> / trials = [1-5 = memorytask] </block> It's possible in much the same way you already store the shown words. Simply store the paired scene type in the same way. You can then evaluate the correctness in the memory part by pulling up the paired scene type in /iscorrectresponse. I would give you a running example, but the code snippet you provided is not useful or complete enough for me to do so. It's not even clear which response -- "m" or "n" -- maps to park and market respectively I apologize for the unhelpful code! Please see attached for expanded code, as an example would be useful if you are able. For the memory test, an "n" response is for park, and an "m" response is for market. It does not matter what response they made when they first saw the image, but rather just what image the word was paired with. If this is still unhelpful I can try to figure it out based on what you provided. Thank you very much!! Thanks. Here's how you can achieve what you want. (1) Add another empty <item> element to the script to store the paired scene type for each word. <item pairedscene> </item> (2) Add either "n" or "m" to that <item> element ,depending on the type of show trial: <trial parks> / ontrialend = [ item.shownwords.appenditem(text.noun.currentitem); item.pairedscene.appenditem("n");] / stimulustimes = [0 =park, noun; 3000 = blank] / posttrialpause = 1000 / trialduration = 4000 / responseinterrupt = frames / beginresponsetime = 0 </trial> <trial markets> / ontrialend = [ item.shownwords.appenditem(text.noun.currentitem); item.pairedscene.appenditem("m");] / stimulustimes = [0=market, noun; 3000 = blank] / posttrialpause = 1000 / trialduration = 4000 / responseinterrupt = frames / beginresponsetime = 0 </trial> (3) Add the following /iscorrectresponse logic to your source <trial> <trial source> / stimulustimes = [0 =scene1_1, scene2_2, shownword] / validresponse = ("m", "n") / iscorrectresponse = [ computer.scancodetochar(trial.source.response)==item.pairedscene.item(text.shownword.currentindex); ]/ posttrialpause = 500 / timeout = 5000 / beginresponsetime = 0 </trial> Thank you so much for this, and it works great in inquisit 5! However, when I run this exact same code in inquisit 6 web it no longer works. I received the error "'computer.scancodetochar(trial.source.response)==item.pairedword.item(text.shownword.currentindex)' An argument with an invalid value was passed to a function." Additionally, I received "This command is obsolete and will be ignored." Unfortunately, I do not have a inquisit 6 lab license, so it is difficult to test this out more specifically. Does this code no longer work with inquisit 6? If so, is there a way to do the same thing in inquisit 6? Thank you!! Change <trial source> / stimulustimes = [0 =scene1_1, scene2_2, shownword] / validresponse = ("m", "n") / iscorrectresponse = [ computer.scancodetochar(trial.source.response)==item.pairedscene.item( text.shownword.currentindex); ] / posttrialpause = 500 / timeout = 5000 / beginresponsetime = 0 </trial to <trial source> / stimulustimes = [0 =scene1_1, scene2_2, shownword] / validresponse = ("m", "n") / iscorrectresponse = [ computer.scancodetochar(trial.source.response)==item.pairedscene.item( text.shownword.currentitemnumber); ] / posttrialpause = 500 / timeout = 5000 / beginresponsetime = 0 </trial> and it should work. Thank you! Unfortunately I am still getting the same error
|
|
|
Dave
|
|
Group: Administrators
Posts: 13K,
Visits: 104K
|
+x+x+x+x+x+x+x+x+x+x+x+xHi, Working on an experiment where I want to test participants' memory for only items seen during the experiment. Let's say I have a list of words that is 10 items long. However, participants only view 5 of them during the experiment. Is there a way to indicate in my memory test trial/block to only show the 5 words seen during the experiment? These 5 words would be unique for each participant. Thanks! You can write the shown words to an empty <item> element at runtime and then use that in the recall part as needed. <expt> / blocks = [1=show5; 2=recall] </expt> <block show5> / trials = [1-5 = show] </block> <block recall> / preinstructions = (recallpage) </block> <page recallpage> ^You were shown the following 5 words: <%item.shownwords.item(1)%>, <%item.shownwords.item(2)%>, <%item.shownwords.item(3)%>, <%item.shownwords.item(4)%>, and <%item.shownwords.item(5)%>. </page> <trial show> / ontrialend = [ item.shownwords.appenditem(text.word.currentitem); ] / stimulusframes = [1=word] / validresponse = (0) / trialduration = 2500 / posttrialpause = 500 </trial> <text word> / items = words </text> <item words> / 1 = "Apple" / 2 = "Bird" / 3 = "Cloth" / 4 = "Dam" / 5 = "East" / 6 = "Frost" / 7 = "Gain" / 8 = "Hope" / 9 = "Island" </item> <item shownwords> </item> Thank you so much! I understand how the code you sent is working, however I am struggling to implement it in a trial/block fashion (rather than putting the "shown words" in the instructions). For example, if my memory trial looked like: <trial memorytask> / stimulustimes = [0 =scene1_1, scene2_2, word] / validresponse = ("m", "n") / posttrialpause = 500 / timeout = 5000 / beginresponsetime = 0 </trial> <block memory> / trials = [1-5 = memorytask] </block> The task is for participants to match the words they have seen in the experiment (from a large word pool) to the picture (scene 1 or 2) it was paired with. I am having difficulty modifying the code to only show the shown words, as opposed to all of them. Thanks again!! The shown words are stored in an item element. You use this <item> element just like any other. I.e. set up a <text> element referencing that <item> element and have a <trial> display that. <text shownword> / items = shownwords </text> <item shownwords> </item> <trial memorytask> / stimulustimes = [0 =scene1_1, scene2_2, shownword] / validresponse = ("m", "n") / posttrialpause = 500 / timeout = 5000 / beginresponsetime = 0 </trial> <block memory> / trials = [1-5 = memorytask] </block> Ah, I forgot to add the text element. Thank you! To follow-up: during the first part of the experiment, a word is paired with either a park or a market scene. During the memory test I am testing whether they remember that association. Is there a way in inquisit to mark whether they are correct or not based on the actual pairing during the first part? For example, if the word was paired with park and they chose park in the test, that would be marked correct. Right now, it marks any response as correct and I would have to manually go back and check the original pairing. Here is some code below (excluding some naming of items). <text shownword> / items = shownwords </text> <item shownwords> </item> <trial scene1> / ontrialend = [ item.shownwords.appenditem(text.noun.currentitem); ] / stimulustimes = [0 =park, word; 3000 = blank] / posttrialpause = 1000 / trialduration = 4000 / responseinterrupt = frames / beginresponsetime = 0 </trial> <trial scene2> / ontrialend = [ item.shownwords.appenditem(text.noun.currentitem); ] / stimulustimes = [0=market, word; 3000 = blank] / posttrialpause = 1000 / trialduration = 4000 / responseinterrupt = frames / beginresponsetime = 0 </trial> <trial memorytask> / stimulustimes = [0 =park, market, shownword] / validresponse = ("m", "n") / posttrialpause = 500 / timeout = 5000 / beginresponsetime = 0 </trial> <block memory> / trials = [1-5 = memorytask] </block> It's possible in much the same way you already store the shown words. Simply store the paired scene type in the same way. You can then evaluate the correctness in the memory part by pulling up the paired scene type in /iscorrectresponse. I would give you a running example, but the code snippet you provided is not useful or complete enough for me to do so. It's not even clear which response -- "m" or "n" -- maps to park and market respectively I apologize for the unhelpful code! Please see attached for expanded code, as an example would be useful if you are able. For the memory test, an "n" response is for park, and an "m" response is for market. It does not matter what response they made when they first saw the image, but rather just what image the word was paired with. If this is still unhelpful I can try to figure it out based on what you provided. Thank you very much!! Thanks. Here's how you can achieve what you want. (1) Add another empty <item> element to the script to store the paired scene type for each word. <item pairedscene> </item> (2) Add either "n" or "m" to that <item> element ,depending on the type of show trial: <trial parks> / ontrialend = [ item.shownwords.appenditem(text.noun.currentitem); item.pairedscene.appenditem("n");] / stimulustimes = [0 =park, noun; 3000 = blank] / posttrialpause = 1000 / trialduration = 4000 / responseinterrupt = frames / beginresponsetime = 0 </trial> <trial markets> / ontrialend = [ item.shownwords.appenditem(text.noun.currentitem); item.pairedscene.appenditem("m");] / stimulustimes = [0=market, noun; 3000 = blank] / posttrialpause = 1000 / trialduration = 4000 / responseinterrupt = frames / beginresponsetime = 0 </trial> (3) Add the following /iscorrectresponse logic to your source <trial> <trial source> / stimulustimes = [0 =scene1_1, scene2_2, shownword] / validresponse = ("m", "n") / iscorrectresponse = [ computer.scancodetochar(trial.source.response)==item.pairedscene.item(text.shownword.currentindex); ]/ posttrialpause = 500 / timeout = 5000 / beginresponsetime = 0 </trial> Thank you so much for this, and it works great in inquisit 5! However, when I run this exact same code in inquisit 6 web it no longer works. I received the error "'computer.scancodetochar(trial.source.response)==item.pairedword.item(text.shownword.currentindex)' An argument with an invalid value was passed to a function." Additionally, I received "This command is obsolete and will be ignored." Unfortunately, I do not have a inquisit 6 lab license, so it is difficult to test this out more specifically. Does this code no longer work with inquisit 6? If so, is there a way to do the same thing in inquisit 6? Thank you!! Change <trial source> / stimulustimes = [0 =scene1_1, scene2_2, shownword] / validresponse = ("m", "n") / iscorrectresponse = [ computer.scancodetochar(trial.source.response)==item.pairedscene.item( text.shownword.currentindex); ] / posttrialpause = 500 / timeout = 5000 / beginresponsetime = 0 </trial to <trial source> / stimulustimes = [0 =scene1_1, scene2_2, shownword] / validresponse = ("m", "n") / iscorrectresponse = [ computer.scancodetochar(trial.source.response)==item.pairedscene.item( text.shownword.currentitemnumber); ] / posttrialpause = 500 / timeout = 5000 / beginresponsetime = 0 </trial> and it should work. Thank you! Unfortunately I am still getting the same error Please provide the full script and everything else it needs to run then. It's entirely possible the errors stem from something else.
|
|
|
lir1995
|
|
Group: Forum Members
Posts: 44,
Visits: 201
|
+x+x+x+x+x+x+x+x+x+x+x+x+xHi, Working on an experiment where I want to test participants' memory for only items seen during the experiment. Let's say I have a list of words that is 10 items long. However, participants only view 5 of them during the experiment. Is there a way to indicate in my memory test trial/block to only show the 5 words seen during the experiment? These 5 words would be unique for each participant. Thanks! You can write the shown words to an empty <item> element at runtime and then use that in the recall part as needed. <expt> / blocks = [1=show5; 2=recall] </expt> <block show5> / trials = [1-5 = show] </block> <block recall> / preinstructions = (recallpage) </block> <page recallpage> ^You were shown the following 5 words: <%item.shownwords.item(1)%>, <%item.shownwords.item(2)%>, <%item.shownwords.item(3)%>, <%item.shownwords.item(4)%>, and <%item.shownwords.item(5)%>. </page> <trial show> / ontrialend = [ item.shownwords.appenditem(text.word.currentitem); ] / stimulusframes = [1=word] / validresponse = (0) / trialduration = 2500 / posttrialpause = 500 </trial> <text word> / items = words </text> <item words> / 1 = "Apple" / 2 = "Bird" / 3 = "Cloth" / 4 = "Dam" / 5 = "East" / 6 = "Frost" / 7 = "Gain" / 8 = "Hope" / 9 = "Island" </item> <item shownwords> </item> Thank you so much! I understand how the code you sent is working, however I am struggling to implement it in a trial/block fashion (rather than putting the "shown words" in the instructions). For example, if my memory trial looked like: <trial memorytask> / stimulustimes = [0 =scene1_1, scene2_2, word] / validresponse = ("m", "n") / posttrialpause = 500 / timeout = 5000 / beginresponsetime = 0 </trial> <block memory> / trials = [1-5 = memorytask] </block> The task is for participants to match the words they have seen in the experiment (from a large word pool) to the picture (scene 1 or 2) it was paired with. I am having difficulty modifying the code to only show the shown words, as opposed to all of them. Thanks again!! The shown words are stored in an item element. You use this <item> element just like any other. I.e. set up a <text> element referencing that <item> element and have a <trial> display that. <text shownword> / items = shownwords </text> <item shownwords> </item> <trial memorytask> / stimulustimes = [0 =scene1_1, scene2_2, shownword] / validresponse = ("m", "n") / posttrialpause = 500 / timeout = 5000 / beginresponsetime = 0 </trial> <block memory> / trials = [1-5 = memorytask] </block> Ah, I forgot to add the text element. Thank you! To follow-up: during the first part of the experiment, a word is paired with either a park or a market scene. During the memory test I am testing whether they remember that association. Is there a way in inquisit to mark whether they are correct or not based on the actual pairing during the first part? For example, if the word was paired with park and they chose park in the test, that would be marked correct. Right now, it marks any response as correct and I would have to manually go back and check the original pairing. Here is some code below (excluding some naming of items). <text shownword> / items = shownwords </text> <item shownwords> </item> <trial scene1> / ontrialend = [ item.shownwords.appenditem(text.noun.currentitem); ] / stimulustimes = [0 =park, word; 3000 = blank] / posttrialpause = 1000 / trialduration = 4000 / responseinterrupt = frames / beginresponsetime = 0 </trial> <trial scene2> / ontrialend = [ item.shownwords.appenditem(text.noun.currentitem); ] / stimulustimes = [0=market, word; 3000 = blank] / posttrialpause = 1000 / trialduration = 4000 / responseinterrupt = frames / beginresponsetime = 0 </trial> <trial memorytask> / stimulustimes = [0 =park, market, shownword] / validresponse = ("m", "n") / posttrialpause = 500 / timeout = 5000 / beginresponsetime = 0 </trial> <block memory> / trials = [1-5 = memorytask] </block> It's possible in much the same way you already store the shown words. Simply store the paired scene type in the same way. You can then evaluate the correctness in the memory part by pulling up the paired scene type in /iscorrectresponse. I would give you a running example, but the code snippet you provided is not useful or complete enough for me to do so. It's not even clear which response -- "m" or "n" -- maps to park and market respectively I apologize for the unhelpful code! Please see attached for expanded code, as an example would be useful if you are able. For the memory test, an "n" response is for park, and an "m" response is for market. It does not matter what response they made when they first saw the image, but rather just what image the word was paired with. If this is still unhelpful I can try to figure it out based on what you provided. Thank you very much!! Thanks. Here's how you can achieve what you want. (1) Add another empty <item> element to the script to store the paired scene type for each word. <item pairedscene> </item> (2) Add either "n" or "m" to that <item> element ,depending on the type of show trial: <trial parks> / ontrialend = [ item.shownwords.appenditem(text.noun.currentitem); item.pairedscene.appenditem("n");] / stimulustimes = [0 =park, noun; 3000 = blank] / posttrialpause = 1000 / trialduration = 4000 / responseinterrupt = frames / beginresponsetime = 0 </trial> <trial markets> / ontrialend = [ item.shownwords.appenditem(text.noun.currentitem); item.pairedscene.appenditem("m");] / stimulustimes = [0=market, noun; 3000 = blank] / posttrialpause = 1000 / trialduration = 4000 / responseinterrupt = frames / beginresponsetime = 0 </trial> (3) Add the following /iscorrectresponse logic to your source <trial> <trial source> / stimulustimes = [0 =scene1_1, scene2_2, shownword] / validresponse = ("m", "n") / iscorrectresponse = [ computer.scancodetochar(trial.source.response)==item.pairedscene.item(text.shownword.currentindex); ]/ posttrialpause = 500 / timeout = 5000 / beginresponsetime = 0 </trial> Thank you so much for this, and it works great in inquisit 5! However, when I run this exact same code in inquisit 6 web it no longer works. I received the error "'computer.scancodetochar(trial.source.response)==item.pairedword.item(text.shownword.currentindex)' An argument with an invalid value was passed to a function." Additionally, I received "This command is obsolete and will be ignored." Unfortunately, I do not have a inquisit 6 lab license, so it is difficult to test this out more specifically. Does this code no longer work with inquisit 6? If so, is there a way to do the same thing in inquisit 6? Thank you!! Change <trial source> / stimulustimes = [0 =scene1_1, scene2_2, shownword] / validresponse = ("m", "n") / iscorrectresponse = [ computer.scancodetochar(trial.source.response)==item.pairedscene.item( text.shownword.currentindex); ] / posttrialpause = 500 / timeout = 5000 / beginresponsetime = 0 </trial to <trial source> / stimulustimes = [0 =scene1_1, scene2_2, shownword] / validresponse = ("m", "n") / iscorrectresponse = [ computer.scancodetochar(trial.source.response)==item.pairedscene.item( text.shownword.currentitemnumber); ] / posttrialpause = 500 / timeout = 5000 / beginresponsetime = 0 </trial> and it should work. Thank you! Unfortunately I am still getting the same error Please provide the full script and everything else it needs to run then. It's entirely possible the errors stem from something else. Thank you very much for helping! I attached the script and three images necessary for running it. It runs fine in inquisit 5 lab. I only get the error when running in inquisit 6 web. Thanks!
|
|
|
Dave
|
|
Group: Administrators
Posts: 13K,
Visits: 104K
|
+x+x+x+x+x+x+x+x+x+x+x+x+x+xHi, Working on an experiment where I want to test participants' memory for only items seen during the experiment. Let's say I have a list of words that is 10 items long. However, participants only view 5 of them during the experiment. Is there a way to indicate in my memory test trial/block to only show the 5 words seen during the experiment? These 5 words would be unique for each participant. Thanks! You can write the shown words to an empty <item> element at runtime and then use that in the recall part as needed. <expt> / blocks = [1=show5; 2=recall] </expt> <block show5> / trials = [1-5 = show] </block> <block recall> / preinstructions = (recallpage) </block> <page recallpage> ^You were shown the following 5 words: <%item.shownwords.item(1)%>, <%item.shownwords.item(2)%>, <%item.shownwords.item(3)%>, <%item.shownwords.item(4)%>, and <%item.shownwords.item(5)%>. </page> <trial show> / ontrialend = [ item.shownwords.appenditem(text.word.currentitem); ] / stimulusframes = [1=word] / validresponse = (0) / trialduration = 2500 / posttrialpause = 500 </trial> <text word> / items = words </text> <item words> / 1 = "Apple" / 2 = "Bird" / 3 = "Cloth" / 4 = "Dam" / 5 = "East" / 6 = "Frost" / 7 = "Gain" / 8 = "Hope" / 9 = "Island" </item> <item shownwords> </item> Thank you so much! I understand how the code you sent is working, however I am struggling to implement it in a trial/block fashion (rather than putting the "shown words" in the instructions). For example, if my memory trial looked like: <trial memorytask> / stimulustimes = [0 =scene1_1, scene2_2, word] / validresponse = ("m", "n") / posttrialpause = 500 / timeout = 5000 / beginresponsetime = 0 </trial> <block memory> / trials = [1-5 = memorytask] </block> The task is for participants to match the words they have seen in the experiment (from a large word pool) to the picture (scene 1 or 2) it was paired with. I am having difficulty modifying the code to only show the shown words, as opposed to all of them. Thanks again!! The shown words are stored in an item element. You use this <item> element just like any other. I.e. set up a <text> element referencing that <item> element and have a <trial> display that. <text shownword> / items = shownwords </text> <item shownwords> </item> <trial memorytask> / stimulustimes = [0 =scene1_1, scene2_2, shownword] / validresponse = ("m", "n") / posttrialpause = 500 / timeout = 5000 / beginresponsetime = 0 </trial> <block memory> / trials = [1-5 = memorytask] </block> Ah, I forgot to add the text element. Thank you! To follow-up: during the first part of the experiment, a word is paired with either a park or a market scene. During the memory test I am testing whether they remember that association. Is there a way in inquisit to mark whether they are correct or not based on the actual pairing during the first part? For example, if the word was paired with park and they chose park in the test, that would be marked correct. Right now, it marks any response as correct and I would have to manually go back and check the original pairing. Here is some code below (excluding some naming of items). <text shownword> / items = shownwords </text> <item shownwords> </item> <trial scene1> / ontrialend = [ item.shownwords.appenditem(text.noun.currentitem); ] / stimulustimes = [0 =park, word; 3000 = blank] / posttrialpause = 1000 / trialduration = 4000 / responseinterrupt = frames / beginresponsetime = 0 </trial> <trial scene2> / ontrialend = [ item.shownwords.appenditem(text.noun.currentitem); ] / stimulustimes = [0=market, word; 3000 = blank] / posttrialpause = 1000 / trialduration = 4000 / responseinterrupt = frames / beginresponsetime = 0 </trial> <trial memorytask> / stimulustimes = [0 =park, market, shownword] / validresponse = ("m", "n") / posttrialpause = 500 / timeout = 5000 / beginresponsetime = 0 </trial> <block memory> / trials = [1-5 = memorytask] </block> It's possible in much the same way you already store the shown words. Simply store the paired scene type in the same way. You can then evaluate the correctness in the memory part by pulling up the paired scene type in /iscorrectresponse. I would give you a running example, but the code snippet you provided is not useful or complete enough for me to do so. It's not even clear which response -- "m" or "n" -- maps to park and market respectively I apologize for the unhelpful code! Please see attached for expanded code, as an example would be useful if you are able. For the memory test, an "n" response is for park, and an "m" response is for market. It does not matter what response they made when they first saw the image, but rather just what image the word was paired with. If this is still unhelpful I can try to figure it out based on what you provided. Thank you very much!! Thanks. Here's how you can achieve what you want. (1) Add another empty <item> element to the script to store the paired scene type for each word. <item pairedscene> </item> (2) Add either "n" or "m" to that <item> element ,depending on the type of show trial: <trial parks> / ontrialend = [ item.shownwords.appenditem(text.noun.currentitem); item.pairedscene.appenditem("n");] / stimulustimes = [0 =park, noun; 3000 = blank] / posttrialpause = 1000 / trialduration = 4000 / responseinterrupt = frames / beginresponsetime = 0 </trial> <trial markets> / ontrialend = [ item.shownwords.appenditem(text.noun.currentitem); item.pairedscene.appenditem("m");] / stimulustimes = [0=market, noun; 3000 = blank] / posttrialpause = 1000 / trialduration = 4000 / responseinterrupt = frames / beginresponsetime = 0 </trial> (3) Add the following /iscorrectresponse logic to your source <trial> <trial source> / stimulustimes = [0 =scene1_1, scene2_2, shownword] / validresponse = ("m", "n") / iscorrectresponse = [ computer.scancodetochar(trial.source.response)==item.pairedscene.item(text.shownword.currentindex); ]/ posttrialpause = 500 / timeout = 5000 / beginresponsetime = 0 </trial> Thank you so much for this, and it works great in inquisit 5! However, when I run this exact same code in inquisit 6 web it no longer works. I received the error "'computer.scancodetochar(trial.source.response)==item.pairedword.item(text.shownword.currentindex)' An argument with an invalid value was passed to a function." Additionally, I received "This command is obsolete and will be ignored." Unfortunately, I do not have a inquisit 6 lab license, so it is difficult to test this out more specifically. Does this code no longer work with inquisit 6? If so, is there a way to do the same thing in inquisit 6? Thank you!! Change <trial source> / stimulustimes = [0 =scene1_1, scene2_2, shownword] / validresponse = ("m", "n") / iscorrectresponse = [ computer.scancodetochar(trial.source.response)==item.pairedscene.item( text.shownword.currentindex); ] / posttrialpause = 500 / timeout = 5000 / beginresponsetime = 0 </trial to <trial source> / stimulustimes = [0 =scene1_1, scene2_2, shownword] / validresponse = ("m", "n") / iscorrectresponse = [ computer.scancodetochar(trial.source.response)==item.pairedscene.item( text.shownword.currentitemnumber); ] / posttrialpause = 500 / timeout = 5000 / beginresponsetime = 0 </trial> and it should work. Thank you! Unfortunately I am still getting the same error Please provide the full script and everything else it needs to run then. It's entirely possible the errors stem from something else. Thank you very much for helping! I attached the script and three images necessary for running it. It runs fine in inquisit 5 lab. I only get the error when running in inquisit 6 web. Thanks! There is no "agree" response option. There is only a "continue" option, so that's a clear mistake you need to fix. These are just warnings, they don't prevent the script from running. There is no /showtooltips attribute for <slider> elements in Inquisit 6 anymore, so that's simply ignored.
|
|
|