cansu
|
|
Group: Forum Members
Posts: 38,
Visits: 136
|
Thanks for the reply For feedback triggers, is it possible to send different triggers for feedback after reward cue ,different triggers for feedback after punishment cue,different triggers for feedback after nonincentive cue? Is there anything I can do to send feedback triggers differently according to the nature of the initial cue using the method you mentioned?
|
|
|
Dave
|
|
Group: Administrators
Posts: 13K,
Visits: 106K
|
+xThanks for the replyFor feedback triggers, is it possible to send different triggers for feedback after reward cue ,different triggers for feedback after punishment cue,different triggers for feedback after nonincentive cue? Is there anything I can do to send feedback triggers differently according to the nature of the initial cue using the method you mentioned? The exact same method applies.
|
|
|
cansu
|
|
Group: Forum Members
Posts: 38,
Visits: 136
|
I really appreciate your help but as I mentioned before I am unfamiliar with the inquisit language and I have no idea which parts of the script I will add these additions to. As I said, I did not understand the revision I will make after defining the reward and loss cues in two different ports. If possible, can you do these revisions and share the full script version that sends different triggers for reward and punishment? Thanks for you help again🙏🏻🙏🏻:(
|
|
|
cansu
|
|
Group: Forum Members
Posts: 38,
Visits: 136
|
I am a psychiatrist and I am not proficient in codes other than Python. I am aware that I ask a lot of questions, unfortunately this is due to my lack of proficiency in the Inquisit language. I would be grateful if you could help me.🙏🏻
|
|
|
cansu
|
|
Group: Forum Members
Posts: 38,
Visits: 136
|
Since I will be working on ERP in the eeg waves after feedback, it will be necessary for the feedback triggers that come after the reward cues to be different during the analysis phase. If you can make the feedback trigger that comes after the reward cue '1' as '15', the feedback trigger that comes after the nonincentive cue as 'a different number other than 15'; and similarly, the trigger that comes after the loss cue in the loss block and the trigger that comes after the neutral cue are also different numbers than 15, I would be very happy. If you explain how to do this in more detail, I will try to do it of course.
|
|
|
Dave
|
|
Group: Administrators
Posts: 13K,
Visits: 106K
|
+xSince I will be working on ERP in the eeg waves after feedback, it will be necessary for the feedback triggers that come after the reward cues to be different during the analysis phase.If you can make the feedback trigger that comes after the reward cue '1' as '15', the feedback trigger that comes after the nonincentive cue as 'a different number other than 15'; and similarly, the trigger that comes after the loss cue in the loss block and the trigger that comes after the neutral cue are also different numbers than 15, I would be very happy.If you explain how to do this in more detail, I will try to do it of course. Please work through the Programmer's Manual available at https://www.millisecond.com/support/Inquisit%20Programmer's%20Manual.pdf and then through your script until you have a better understanding of how it actually works and what does what. Given that you are familiary with other programming languages (e.g. Python), you should be able to pick up the basic structure and syntax rules quickly. Then try to make the modifications on the basis of what I explained previously. If you get stuck, you are more than welcome to ask concrete questions.
|
|
|
cansu
|
|
Group: Forum Members
Posts: 38,
Visits: 136
|
I will take a look at the manuel you sent, thank you very much. If you share with me the version of the reward and loss cues defined with different triggers as you answered in my previous questions, I can have a better understanding of including the port and trigger commands in the script.🙏🏻🙏🏻 I reviewed the manual you sent, I could not see a detailed explanation about the port and trigger, but I will take a look again.
|
|
|
Dave
|
|
Group: Administrators
Posts: 13K,
Visits: 106K
|
+xI will take a look at the manuel you sent, thank you very much.If you share with me the version of the reward and loss cues defined with different triggers as you answered in my previous questions, I can have a better understanding of including the port and trigger commands in the script.🙏🏻🙏🏻I reviewed the manual you sent, I could not see a detailed explanation about the port and trigger, but I will take a look again. You don't need a detailed explanation of <port> elements. They are stimulus elements like any other (<text>, <picture>, <sound>, etc.) and are to be treated in the same way as any other stimulus element. The code for different incentive cue triggers in reward vs punishment condition is already in this thread.
|
|
|
cansu
|
|
Group: Forum Members
Posts: 38,
Visits: 136
|
I will change this part of y script below with yours and add port definitions. After that, there will be a task script that sends different triggers for cues. As far as I understand, I don't think I need to make any other changes.
trial incentive> /inputdevice = mousekey /validresponse = (lbuttondown, rbuttondown) /correctresponse = (lbuttondown, rbuttondown) /responsemessage = (lbuttondown,incentivecue, 100) /responsemessage = (rbuttondown,incentivecue, 100)
/ ontrialbegin = [ values.incentive_condition = 1; values.iti=0; values.targetduration = expressions.determineDuration; values.delayduration = list.delay.nextvalue; if (values.exp_condition == 1) { trial.incentive.insertstimulustime(port.incentivecueeeg_reward, 0); } else if (values.exp_condition == 2) { trial.incentive.insertstimulustime(port.incentivecueeeg_punishment, 0); }; trial.incentive.insertstimulustime(shape.incentivecue, values.cueduration); trial.incentive.insertstimulustime(shape.eraser, values.cueduration); trial.incentive.insertstimulustime(port.erasereeg, values.cueduration); trial.incentive.insertstimulustime(shape.target, (values.cueduration + values.delayduration)); trial.incentive.insertstimulustime(port.targeteeg, (values.cueduration + values.delayduration)); ] / posttrialpause = values.fixediti / stimulustimes = [0 = incentivecue, total] / beginresponsetime = values.cueduration + values.delayduration / responseinterrupt = immediate / timeout = values.cueduration + values.delayduration + values.targetduration / monkeyresponse = (values.responsekey) / ontrialend = [ trial.incentive.resetstimulusframes(); values.iti = values.trialduration - values.cueduration - values.delayduration - trial.incentive.latency - values.feedbackduration; if (values.exp_condition == 0) { values.count_IncentiveControl += 1; values.countcorrect_IncentiveControl += trial.incentive.correct; list.successIncentive_Control.insertitem(trial.incentive.correct, 1); } else if (values.exp_condition == 1) { values.count_IncentiveReward += 1; values.countcorrect_IncentiveReward += trial.incentive.correct; list.successIncentive_Reward.insertitem(trial.incentive.correct, 1); } else if (values.exp_condition == 2) { values.count_IncentivePunishment += 1; values.countcorrect_IncentivePunishment += trial.incentive.correct; list.successIncentive_Punishment.insertitem(trial.incentive.correct, 1); } ; ] / branch = [trial.feedback]
|
|
|
Dave
|
|
Group: Administrators
Posts: 13K,
Visits: 106K
|
+xI will change this part of y script below with yours and add port definitions.After that, there will be a task script that sends different triggers for cues. As far as I understand, I don't think I need to make any other changes.trial incentive>/inputdevice = mousekey/validresponse = (lbuttondown, rbuttondown)/correctresponse = (lbuttondown, rbuttondown)/responsemessage = (lbuttondown,incentivecue, 100)/responsemessage = (rbuttondown,incentivecue, 100)/ ontrialbegin = [ values.incentive_condition = 1; values.iti=0; values.targetduration = expressions.determineDuration; values.delayduration = list.delay.nextvalue; if (values.exp_condition == 1) { trial.incentive.insertstimulustime(port.incentivecueeeg_reward, 0); } else if (values.exp_condition == 2) { trial.incentive.insertstimulustime(port.incentivecueeeg_punishment, 0); }; trial.incentive.insertstimulustime(shape.incentivecue, values.cueduration); trial.incentive.insertstimulustime(shape.eraser, values.cueduration); trial.incentive.insertstimulustime(port.erasereeg, values.cueduration); trial.incentive.insertstimulustime(shape.target, (values.cueduration + values.delayduration)); trial.incentive.insertstimulustime(port.targeteeg, (values.cueduration + values.delayduration)); ]/ posttrialpause = values.fixediti/ stimulustimes = [0 = incentivecue, total]/ beginresponsetime = values.cueduration + values.delayduration/ responseinterrupt = immediate/ timeout = values.cueduration + values.delayduration + values.targetduration/ monkeyresponse = (values.responsekey)/ ontrialend = [ trial.incentive.resetstimulusframes(); values.iti = values.trialduration - values.cueduration - values.delayduration - trial.incentive.latency - values.feedbackduration; if (values.exp_condition == 0) { values.count_IncentiveControl += 1; values.countcorrect_IncentiveControl += trial.incentive.correct; list.successIncentive_Control.insertitem(trial.incentive.correct, 1); } else if (values.exp_condition == 1) { values.count_IncentiveReward += 1; values.countcorrect_IncentiveReward += trial.incentive.correct; list.successIncentive_Reward.insertitem(trial.incentive.correct, 1); } else if (values.exp_condition == 2) { values.count_IncentivePunishment += 1; values.countcorrect_IncentivePunishment += trial.incentive.correct; list.successIncentive_Punishment.insertitem(trial.incentive.correct, 1); } ;] / branch = [trial.feedback] In addition to changing <trial incentive> this way, you also need to add the two port elements I included in my response -- <port incentivecueeeg_reward> and <port incentivecueeeg_punishment> -- to your script. <port incentivecueeeg_reward> / port = COM6 / subport = data / items = ("00000001") </port>
<port incentivecueeeg_punishment> / port = COM6 / subport = data / items = ("00000010") </port> After that forget about triggers and the MID task for a while. Instead work through the Programmer's Manual from front to back and focus on understanding the basic building blocks that every Inquisit script is made up of. I.e., what are stimulus elements and what do they do? What do trial elements do? What do blocks do? And so forth. Once you have acquired these basics, you should be able to actually "read" the MID task code and have a general sense of what each thing in it does and why.
|
|
|