BIOSEMİ ACTIVE2 MID TASK TRIGGER PROBLEM


Author
Message
cansu
cansu
Associate Member (89 reputation)Associate Member (89 reputation)Associate Member (89 reputation)Associate Member (89 reputation)Associate Member (89 reputation)Associate Member (89 reputation)Associate Member (89 reputation)Associate Member (89 reputation)Associate Member (89 reputation)
Group: Forum Members
Posts: 38, Visits: 136
Thank you four your help🙏🏻
cansu
cansu
Associate Member (89 reputation)Associate Member (89 reputation)Associate Member (89 reputation)Associate Member (89 reputation)Associate Member (89 reputation)Associate Member (89 reputation)Associate Member (89 reputation)Associate Member (89 reputation)Associate Member (89 reputation)
Group: Forum Members
Posts: 38, Visits: 136
cansu - 3/12/2025
Thank you four your help🙏🏻

I was able to trigger reward and loss cues differently with your guidance, thanks again.

I defined feedback punishment feedback reward and feedback loss ports with the same method,
<text feedback>
/ items = feedback
/ select = values.feedback
/ vjustify = center
/ fontstyle = ("Arial", 5%, false, false, false, false, 5, 1)
</text>
<port feedbackeeg_reward>
/ port = COM6
/ subport = data
/ items = ("00001111")
</port>
<port feedbackeeg_punishment>
/ port = COM6
/ subport = data
/ items = ("00011111")
</port>
<port feedbackeeg_control>
/ port = COM6
/ subport = data
/ items = ("00111111")
</port>






But I couldn't understand how to place these newly defined ports in the trial feedback section in the script.
<trial feedback>
/ ontrialbegin = [
    if (values.feedback == 1 || values.feedback == 2 || values.feedback == 5) {
        text.feedback.textcolor = green;
    } else {
        text.feedback.textcolor = red;
    };
]
/ posttrialpause = values.fixediti
/ stimulusframes = [1 = feedback,feedbackeeg, total]
/ timeout = values.cueduration + values.targetduration
/ posttrialpause = values.iti
/ recorddata = false

]
</trial>

This is the only part missing from the experiment, I would be happy if you could help. :(
Dave
Dave
Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)
Group: Administrators
Posts: 13K, Visits: 106K
cansu - 3/13/2025
cansu - 3/12/2025
Thank you four your help🙏🏻

I was able to trigger reward and loss cues differently with your guidance, thanks again.

I defined feedback punishment feedback reward and feedback loss ports with the same method,
<text feedback>
/ items = feedback
/ select = values.feedback
/ vjustify = center
/ fontstyle = ("Arial", 5%, false, false, false, false, 5, 1)
</text>
<port feedbackeeg_reward>
/ port = COM6
/ subport = data
/ items = ("00001111")
</port>
<port feedbackeeg_punishment>
/ port = COM6
/ subport = data
/ items = ("00011111")
</port>
<port feedbackeeg_control>
/ port = COM6
/ subport = data
/ items = ("00111111")
</port>






But I couldn't understand how to place these newly defined ports in the trial feedback section in the script.
<trial feedback>
/ ontrialbegin = [
    if (values.feedback == 1 || values.feedback == 2 || values.feedback == 5) {
        text.feedback.textcolor = green;
    } else {
        text.feedback.textcolor = red;
    };
]
/ posttrialpause = values.fixediti
/ stimulusframes = [1 = feedback,feedbackeeg, total]
/ timeout = values.cueduration + values.targetduration
/ posttrialpause = values.iti
/ recorddata = false

]
</trial>

This is the only part missing from the experiment, I would be happy if you could help. :(

You need to remove feedbackeeg from /stimulusframes. Then you need to use conditional logic /ontrialbegin to insert the applicable port stimulus into the trial, based on the condition. This is the exact same thing I showed you for the incentive trial. If you understand how that works, you can do it for the feedback trials as well.
cansu
cansu
Associate Member (89 reputation)Associate Member (89 reputation)Associate Member (89 reputation)Associate Member (89 reputation)Associate Member (89 reputation)Associate Member (89 reputation)Associate Member (89 reputation)Associate Member (89 reputation)Associate Member (89 reputation)
Group: Forum Members
Posts: 38, Visits: 136
Dave - 3/13/2025
cansu - 3/13/2025
cansu - 3/12/2025
Thank you four your help🙏🏻

I was able to trigger reward and loss cues differently with your guidance, thanks again.

I defined feedback punishment feedback reward and feedback loss ports with the same method,
<text feedback>
/ items = feedback
/ select = values.feedback
/ vjustify = center
/ fontstyle = ("Arial", 5%, false, false, false, false, 5, 1)
</text>
<port feedbackeeg_reward>
/ port = COM6
/ subport = data
/ items = ("00001111")
</port>
<port feedbackeeg_punishment>
/ port = COM6
/ subport = data
/ items = ("00011111")
</port>
<port feedbackeeg_control>
/ port = COM6
/ subport = data
/ items = ("00111111")
</port>






But I couldn't understand how to place these newly defined ports in the trial feedback section in the script.
<trial feedback>
/ ontrialbegin = [
    if (values.feedback == 1 || values.feedback == 2 || values.feedback == 5) {
        text.feedback.textcolor = green;
    } else {
        text.feedback.textcolor = red;
    };
]
/ posttrialpause = values.fixediti
/ stimulusframes = [1 = feedback,feedbackeeg, total]
/ timeout = values.cueduration + values.targetduration
/ posttrialpause = values.iti
/ recorddata = false

]
</trial>

This is the only part missing from the experiment, I would be happy if you could help. :(

You need to remove feedbackeeg from /stimulusframes. Then you need to use conditional logic /ontrialbegin to insert the applicable port stimulus into the trial, based on the condition. This is the exact same thing I showed you for the incentive trial. If you understand how that works, you can do it for the feedback trials as well.

<port feedbackeeg_control>
/ port = COM6
/ subport = data
/ items = ("00001111")
</port>

<port feedbackeeg_reward>
/ port = COM6
/ subport = data
/ items = ("00010000")
</port>

<port feedbackeeg_punishment>
/ port = COM6
/ subport = data
/ items = ("00010001")
</port>

<trial feedback>
/ ontrialbegin = [
    if (values.feedback == 1 || values.feedback == 2 || values.feedback == 5) {
        text.feedback.textcolor = green;
    } else {
        text.feedback.textcolor = red;
    };


  if (values.exp_condition == 0) {
   trial.feedback.insertstimulustime(port.feedbackeeg_control, 0);
  } else if (values.exp_condition == 1) {
   trial.feedback.insertstimulustime(port.feedbackeeg_reward, 0);
  } else if (values.exp_condition == 2) {
   trial.feedback.insertstimulustime(port.feedbackeeg_punishment, 0);
  };
]
/ posttrialpause = values.fixediti
/ stimulusframes = [1 = feedback, total]
/ timeout = values.cueduration + values.targetduration
/ posttrialpause = values.iti
/ recorddata = false
</trial>


I made the changes as you said to send feedback with separate triggers in reward and punishment blocks. I defined a port. However, consistent fixed triggers are not coming in reward and loss blocks. A wide variety of triggers came. What is the problem?
Dave
Dave
Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)
Group: Administrators
Posts: 13K, Visits: 106K
cansu - 3/14/2025
Dave - 3/13/2025
cansu - 3/13/2025
cansu - 3/12/2025
Thank you four your help🙏🏻

I was able to trigger reward and loss cues differently with your guidance, thanks again.

I defined feedback punishment feedback reward and feedback loss ports with the same method,
<text feedback>
/ items = feedback
/ select = values.feedback
/ vjustify = center
/ fontstyle = ("Arial", 5%, false, false, false, false, 5, 1)
</text>
<port feedbackeeg_reward>
/ port = COM6
/ subport = data
/ items = ("00001111")
</port>
<port feedbackeeg_punishment>
/ port = COM6
/ subport = data
/ items = ("00011111")
</port>
<port feedbackeeg_control>
/ port = COM6
/ subport = data
/ items = ("00111111")
</port>






But I couldn't understand how to place these newly defined ports in the trial feedback section in the script.
<trial feedback>
/ ontrialbegin = [
    if (values.feedback == 1 || values.feedback == 2 || values.feedback == 5) {
        text.feedback.textcolor = green;
    } else {
        text.feedback.textcolor = red;
    };
]
/ posttrialpause = values.fixediti
/ stimulusframes = [1 = feedback,feedbackeeg, total]
/ timeout = values.cueduration + values.targetduration
/ posttrialpause = values.iti
/ recorddata = false

]
</trial>

This is the only part missing from the experiment, I would be happy if you could help. :(

You need to remove feedbackeeg from /stimulusframes. Then you need to use conditional logic /ontrialbegin to insert the applicable port stimulus into the trial, based on the condition. This is the exact same thing I showed you for the incentive trial. If you understand how that works, you can do it for the feedback trials as well.

<port feedbackeeg_control>
/ port = COM6
/ subport = data
/ items = ("00001111")
</port>

<port feedbackeeg_reward>
/ port = COM6
/ subport = data
/ items = ("00010000")
</port>

<port feedbackeeg_punishment>
/ port = COM6
/ subport = data
/ items = ("00010001")
</port>

<trial feedback>
/ ontrialbegin = [
    if (values.feedback == 1 || values.feedback == 2 || values.feedback == 5) {
        text.feedback.textcolor = green;
    } else {
        text.feedback.textcolor = red;
    };


  if (values.exp_condition == 0) {
   trial.feedback.insertstimulustime(port.feedbackeeg_control, 0);
  } else if (values.exp_condition == 1) {
   trial.feedback.insertstimulustime(port.feedbackeeg_reward, 0);
  } else if (values.exp_condition == 2) {
   trial.feedback.insertstimulustime(port.feedbackeeg_punishment, 0);
  };
]
/ posttrialpause = values.fixediti
/ stimulusframes = [1 = feedback, total]
/ timeout = values.cueduration + values.targetduration
/ posttrialpause = values.iti
/ recorddata = false
</trial>


I made the changes as you said to send feedback with separate triggers in reward and punishment blocks. I defined a port. However, consistent fixed triggers are not coming in reward and loss blocks. A wide variety of triggers came. What is the problem?

What you are missing is a reset of the stimulus presentation sequence per resetstimulusframes() /ontrialend. See the incentive trial. Anything you add to the stimulus presentation sequence  persists and is cumulative otherwise.

/ ontrialend = [
    trial.feedback.resetstimulusframes();
]


See the Programmer's Manual, page 78 and onwards.
Edited Last Month by Dave
cansu
cansu
Associate Member (89 reputation)Associate Member (89 reputation)Associate Member (89 reputation)Associate Member (89 reputation)Associate Member (89 reputation)Associate Member (89 reputation)Associate Member (89 reputation)Associate Member (89 reputation)Associate Member (89 reputation)
Group: Forum Members
Posts: 38, Visits: 136
Dave - 3/14/2025
cansu - 3/14/2025
Dave - 3/13/2025
cansu - 3/13/2025
cansu - 3/12/2025
Thank you four your help🙏🏻

I was able to trigger reward and loss cues differently with your guidance, thanks again.

I defined feedback punishment feedback reward and feedback loss ports with the same method,
<text feedback>
/ items = feedback
/ select = values.feedback
/ vjustify = center
/ fontstyle = ("Arial", 5%, false, false, false, false, 5, 1)
</text>
<port feedbackeeg_reward>
/ port = COM6
/ subport = data
/ items = ("00001111")
</port>
<port feedbackeeg_punishment>
/ port = COM6
/ subport = data
/ items = ("00011111")
</port>
<port feedbackeeg_control>
/ port = COM6
/ subport = data
/ items = ("00111111")
</port>






But I couldn't understand how to place these newly defined ports in the trial feedback section in the script.
<trial feedback>
/ ontrialbegin = [
    if (values.feedback == 1 || values.feedback == 2 || values.feedback == 5) {
        text.feedback.textcolor = green;
    } else {
        text.feedback.textcolor = red;
    };
]
/ posttrialpause = values.fixediti
/ stimulusframes = [1 = feedback,feedbackeeg, total]
/ timeout = values.cueduration + values.targetduration
/ posttrialpause = values.iti
/ recorddata = false

]
</trial>

This is the only part missing from the experiment, I would be happy if you could help. :(

You need to remove feedbackeeg from /stimulusframes. Then you need to use conditional logic /ontrialbegin to insert the applicable port stimulus into the trial, based on the condition. This is the exact same thing I showed you for the incentive trial. If you understand how that works, you can do it for the feedback trials as well.

<port feedbackeeg_control>
/ port = COM6
/ subport = data
/ items = ("00001111")
</port>

<port feedbackeeg_reward>
/ port = COM6
/ subport = data
/ items = ("00010000")
</port>

<port feedbackeeg_punishment>
/ port = COM6
/ subport = data
/ items = ("00010001")
</port>

<trial feedback>
/ ontrialbegin = [
    if (values.feedback == 1 || values.feedback == 2 || values.feedback == 5) {
        text.feedback.textcolor = green;
    } else {
        text.feedback.textcolor = red;
    };


  if (values.exp_condition == 0) {
   trial.feedback.insertstimulustime(port.feedbackeeg_control, 0);
  } else if (values.exp_condition == 1) {
   trial.feedback.insertstimulustime(port.feedbackeeg_reward, 0);
  } else if (values.exp_condition == 2) {
   trial.feedback.insertstimulustime(port.feedbackeeg_punishment, 0);
  };
]
/ posttrialpause = values.fixediti
/ stimulusframes = [1 = feedback, total]
/ timeout = values.cueduration + values.targetduration
/ posttrialpause = values.iti
/ recorddata = false
</trial>


I made the changes as you said to send feedback with separate triggers in reward and punishment blocks. I defined a port. However, consistent fixed triggers are not coming in reward and loss blocks. A wide variety of triggers came. What is the problem?

What you are missing is a reset of the stimulus presentation sequence per resetstimulusframes() /ontrialend. See the incentive trial. Anything you add to the stimulus presentation sequence  persists and is cumulative otherwise.

/ ontrialend = [
    trial.feedback.resetstimulusframes();
]


See the Programmer's Manual, page 78 and onwards.




I want to define a condition in this section.

<trial feedback>
/ ontrialbegin = [


  trial.feedback.insertstimulustime(text.debug_feedback, 0);
  if (values.exp_condition == 0) {
   trial.feedback.insertstimulustime(port.feedbackeeg_control, 0);
  } else if (values.exp_condition == 1) {

   trial.feedback.insertstimulustime(port.feedbackeeg_reward, 0);
  } else if (values.exp_condition == 2) {
   trial.feedback.insertstimulustime(port.feedbackeeg_punishment, 0);
  };


  if (values.feedback == 1 || values.feedback == 2 || values.feedback == 5) {
   text.feedback.textcolor = green;
  } else {
   text.feedback.textcolor = red;
  };
]


if nonincentive cue comes, feedbackeeg_control comes
<port feedbackeeg_control>
/ port = COM6
/ subport = data
/ items = ("00001111")
</port>

when incentive cue comes, feedbackeeg_reward comes

<port feedbackeeg_reward>
/ port = COM6
/ subport = data
/ items = ("00010000")
</port>

what should I do for this?

Dave
Dave
Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)
Group: Administrators
Posts: 13K, Visits: 106K
cansu - 3/14/2025
Dave - 3/14/2025
cansu - 3/14/2025
Dave - 3/13/2025
cansu - 3/13/2025
cansu - 3/12/2025
Thank you four your help🙏🏻

I was able to trigger reward and loss cues differently with your guidance, thanks again.

I defined feedback punishment feedback reward and feedback loss ports with the same method,
<text feedback>
/ items = feedback
/ select = values.feedback
/ vjustify = center
/ fontstyle = ("Arial", 5%, false, false, false, false, 5, 1)
</text>
<port feedbackeeg_reward>
/ port = COM6
/ subport = data
/ items = ("00001111")
</port>
<port feedbackeeg_punishment>
/ port = COM6
/ subport = data
/ items = ("00011111")
</port>
<port feedbackeeg_control>
/ port = COM6
/ subport = data
/ items = ("00111111")
</port>






But I couldn't understand how to place these newly defined ports in the trial feedback section in the script.
<trial feedback>
/ ontrialbegin = [
    if (values.feedback == 1 || values.feedback == 2 || values.feedback == 5) {
        text.feedback.textcolor = green;
    } else {
        text.feedback.textcolor = red;
    };
]
/ posttrialpause = values.fixediti
/ stimulusframes = [1 = feedback,feedbackeeg, total]
/ timeout = values.cueduration + values.targetduration
/ posttrialpause = values.iti
/ recorddata = false

]
</trial>

This is the only part missing from the experiment, I would be happy if you could help. :(

You need to remove feedbackeeg from /stimulusframes. Then you need to use conditional logic /ontrialbegin to insert the applicable port stimulus into the trial, based on the condition. This is the exact same thing I showed you for the incentive trial. If you understand how that works, you can do it for the feedback trials as well.

<port feedbackeeg_control>
/ port = COM6
/ subport = data
/ items = ("00001111")
</port>

<port feedbackeeg_reward>
/ port = COM6
/ subport = data
/ items = ("00010000")
</port>

<port feedbackeeg_punishment>
/ port = COM6
/ subport = data
/ items = ("00010001")
</port>

<trial feedback>
/ ontrialbegin = [
    if (values.feedback == 1 || values.feedback == 2 || values.feedback == 5) {
        text.feedback.textcolor = green;
    } else {
        text.feedback.textcolor = red;
    };


  if (values.exp_condition == 0) {
   trial.feedback.insertstimulustime(port.feedbackeeg_control, 0);
  } else if (values.exp_condition == 1) {
   trial.feedback.insertstimulustime(port.feedbackeeg_reward, 0);
  } else if (values.exp_condition == 2) {
   trial.feedback.insertstimulustime(port.feedbackeeg_punishment, 0);
  };
]
/ posttrialpause = values.fixediti
/ stimulusframes = [1 = feedback, total]
/ timeout = values.cueduration + values.targetduration
/ posttrialpause = values.iti
/ recorddata = false
</trial>


I made the changes as you said to send feedback with separate triggers in reward and punishment blocks. I defined a port. However, consistent fixed triggers are not coming in reward and loss blocks. A wide variety of triggers came. What is the problem?

What you are missing is a reset of the stimulus presentation sequence per resetstimulusframes() /ontrialend. See the incentive trial. Anything you add to the stimulus presentation sequence  persists and is cumulative otherwise.

/ ontrialend = [
    trial.feedback.resetstimulusframes();
]


See the Programmer's Manual, page 78 and onwards.




I want to define a condition in this section.

<trial feedback>
/ ontrialbegin = [


  trial.feedback.insertstimulustime(text.debug_feedback, 0);
  if (values.exp_condition == 0) {
   trial.feedback.insertstimulustime(port.feedbackeeg_control, 0);
  } else if (values.exp_condition == 1) {

   trial.feedback.insertstimulustime(port.feedbackeeg_reward, 0);
  } else if (values.exp_condition == 2) {
   trial.feedback.insertstimulustime(port.feedbackeeg_punishment, 0);
  };


  if (values.feedback == 1 || values.feedback == 2 || values.feedback == 5) {
   text.feedback.textcolor = green;
  } else {
   text.feedback.textcolor = red;
  };
]


if nonincentive cue comes, feedbackeeg_control comes
<port feedbackeeg_control>
/ port = COM6
/ subport = data
/ items = ("00001111")
</port>

when incentive cue comes, feedbackeeg_reward comes

<port feedbackeeg_reward>
/ port = COM6
/ subport = data
/ items = ("00010000")
</port>

what should I do for this?

You should be sufficiently familair with your script by now. So: Do you have the incentive condition in a variable (a value) somewhere, like the exp_condition? Which variable is that?
cansu
cansu
Associate Member (89 reputation)Associate Member (89 reputation)Associate Member (89 reputation)Associate Member (89 reputation)Associate Member (89 reputation)Associate Member (89 reputation)Associate Member (89 reputation)Associate Member (89 reputation)Associate Member (89 reputation)
Group: Forum Members
Posts: 38, Visits: 136
Dave - 3/14/2025
cansu - 3/14/2025
Dave - 3/14/2025
cansu - 3/14/2025
Dave - 3/13/2025
cansu - 3/13/2025
cansu - 3/12/2025
Thank you four your help🙏🏻

I was able to trigger reward and loss cues differently with your guidance, thanks again.

I defined feedback punishment feedback reward and feedback loss ports with the same method,
<text feedback>
/ items = feedback
/ select = values.feedback
/ vjustify = center
/ fontstyle = ("Arial", 5%, false, false, false, false, 5, 1)
</text>
<port feedbackeeg_reward>
/ port = COM6
/ subport = data
/ items = ("00001111")
</port>
<port feedbackeeg_punishment>
/ port = COM6
/ subport = data
/ items = ("00011111")
</port>
<port feedbackeeg_control>
/ port = COM6
/ subport = data
/ items = ("00111111")
</port>






But I couldn't understand how to place these newly defined ports in the trial feedback section in the script.
<trial feedback>
/ ontrialbegin = [
    if (values.feedback == 1 || values.feedback == 2 || values.feedback == 5) {
        text.feedback.textcolor = green;
    } else {
        text.feedback.textcolor = red;
    };
]
/ posttrialpause = values.fixediti
/ stimulusframes = [1 = feedback,feedbackeeg, total]
/ timeout = values.cueduration + values.targetduration
/ posttrialpause = values.iti
/ recorddata = false

]
</trial>

This is the only part missing from the experiment, I would be happy if you could help. :(

You need to remove feedbackeeg from /stimulusframes. Then you need to use conditional logic /ontrialbegin to insert the applicable port stimulus into the trial, based on the condition. This is the exact same thing I showed you for the incentive trial. If you understand how that works, you can do it for the feedback trials as well.

<port feedbackeeg_control>
/ port = COM6
/ subport = data
/ items = ("00001111")
</port>

<port feedbackeeg_reward>
/ port = COM6
/ subport = data
/ items = ("00010000")
</port>

<port feedbackeeg_punishment>
/ port = COM6
/ subport = data
/ items = ("00010001")
</port>

<trial feedback>
/ ontrialbegin = [
    if (values.feedback == 1 || values.feedback == 2 || values.feedback == 5) {
        text.feedback.textcolor = green;
    } else {
        text.feedback.textcolor = red;
    };


  if (values.exp_condition == 0) {
   trial.feedback.insertstimulustime(port.feedbackeeg_control, 0);
  } else if (values.exp_condition == 1) {
   trial.feedback.insertstimulustime(port.feedbackeeg_reward, 0);
  } else if (values.exp_condition == 2) {
   trial.feedback.insertstimulustime(port.feedbackeeg_punishment, 0);
  };
]
/ posttrialpause = values.fixediti
/ stimulusframes = [1 = feedback, total]
/ timeout = values.cueduration + values.targetduration
/ posttrialpause = values.iti
/ recorddata = false
</trial>


I made the changes as you said to send feedback with separate triggers in reward and punishment blocks. I defined a port. However, consistent fixed triggers are not coming in reward and loss blocks. A wide variety of triggers came. What is the problem?

What you are missing is a reset of the stimulus presentation sequence per resetstimulusframes() /ontrialend. See the incentive trial. Anything you add to the stimulus presentation sequence  persists and is cumulative otherwise.

/ ontrialend = [
    trial.feedback.resetstimulusframes();
]


See the Programmer's Manual, page 78 and onwards.




I want to define a condition in this section.

<trial feedback>
/ ontrialbegin = [


  trial.feedback.insertstimulustime(text.debug_feedback, 0);
  if (values.exp_condition == 0) {
   trial.feedback.insertstimulustime(port.feedbackeeg_control, 0);
  } else if (values.exp_condition == 1) {

   trial.feedback.insertstimulustime(port.feedbackeeg_reward, 0);
  } else if (values.exp_condition == 2) {
   trial.feedback.insertstimulustime(port.feedbackeeg_punishment, 0);
  };


  if (values.feedback == 1 || values.feedback == 2 || values.feedback == 5) {
   text.feedback.textcolor = green;
  } else {
   text.feedback.textcolor = red;
  };
]


if nonincentive cue comes, feedbackeeg_control comes
<port feedbackeeg_control>
/ port = COM6
/ subport = data
/ items = ("00001111")
</port>

when incentive cue comes, feedbackeeg_reward comes

<port feedbackeeg_reward>
/ port = COM6
/ subport = data
/ items = ("00010000")
</port>

what should I do for this?

You should be sufficiently familair with your script by now. So: Do you have the incentive condition in a variable (a value) somewhere, like the exp_condition? Which variable is that?

<trial feedback>
/ ontrialbegin = [



  if (values.exp_condition == 0) {
   trial.feedback.insertstimulustime(port.feedbackeeg_control, 0);
  }
  else if (values.exp_condition == 1) {
   if (values.feedback == 1) {
    trial.feedback.insertstimulustime(port.feedbackeeg_reward1, 0);
   }
   else if (values.feedback == 3) {
    trial.feedback.insertstimulustime(port.feedbackeeg_reward3, 0);
   }
   else if (values.feedback == 2 || values.feedback == 4) {
    trial.feedback.insertstimulustime(port.feedbackeeg_control, 0);
   }
  }

  else if (values.exp_condition == 2) {
   if (values.feedback == 5) {
    trial.feedback.insertstimulustime(port.feedbackeeg_punishment5, 0);
   }
   else if (values.feedback == 6) {
    trial.feedback.insertstimulustime(port.feedbackeeg_punishment6, 0);
   }
   else if (values.feedback == 2 || values.feedback == 4) {
    trial.feedback.insertstimulustime(port.feedbackeeg_control, 0);
   }
  }

  if (values.feedback == 1 || values.feedback == 2 || values.feedback == 5) {
   text.feedback.textcolor = green;
  } else {
   text.feedback.textcolor = red;
  }
]
values.exp condition == 2 feedback triggers do not come.
values.exp condition == 1 also comes. Could this be because else cannot pass from if to another?
What should I do for this?

cansu
cansu
Associate Member (89 reputation)Associate Member (89 reputation)Associate Member (89 reputation)Associate Member (89 reputation)Associate Member (89 reputation)Associate Member (89 reputation)Associate Member (89 reputation)Associate Member (89 reputation)Associate Member (89 reputation)
Group: Forum Members
Posts: 38, Visits: 136
cansu - 3/14/2025
Dave - 3/14/2025
cansu - 3/14/2025
Dave - 3/14/2025
cansu - 3/14/2025
Dave - 3/13/2025
cansu - 3/13/2025
cansu - 3/12/2025
Thank you four your help🙏🏻

I was able to trigger reward and loss cues differently with your guidance, thanks again.

I defined feedback punishment feedback reward and feedback loss ports with the same method,
<text feedback>
/ items = feedback
/ select = values.feedback
/ vjustify = center
/ fontstyle = ("Arial", 5%, false, false, false, false, 5, 1)
</text>
<port feedbackeeg_reward>
/ port = COM6
/ subport = data
/ items = ("00001111")
</port>
<port feedbackeeg_punishment>
/ port = COM6
/ subport = data
/ items = ("00011111")
</port>
<port feedbackeeg_control>
/ port = COM6
/ subport = data
/ items = ("00111111")
</port>






But I couldn't understand how to place these newly defined ports in the trial feedback section in the script.
<trial feedback>
/ ontrialbegin = [
    if (values.feedback == 1 || values.feedback == 2 || values.feedback == 5) {
        text.feedback.textcolor = green;
    } else {
        text.feedback.textcolor = red;
    };
]
/ posttrialpause = values.fixediti
/ stimulusframes = [1 = feedback,feedbackeeg, total]
/ timeout = values.cueduration + values.targetduration
/ posttrialpause = values.iti
/ recorddata = false

]
</trial>

This is the only part missing from the experiment, I would be happy if you could help. :(

You need to remove feedbackeeg from /stimulusframes. Then you need to use conditional logic /ontrialbegin to insert the applicable port stimulus into the trial, based on the condition. This is the exact same thing I showed you for the incentive trial. If you understand how that works, you can do it for the feedback trials as well.

<port feedbackeeg_control>
/ port = COM6
/ subport = data
/ items = ("00001111")
</port>

<port feedbackeeg_reward>
/ port = COM6
/ subport = data
/ items = ("00010000")
</port>

<port feedbackeeg_punishment>
/ port = COM6
/ subport = data
/ items = ("00010001")
</port>

<trial feedback>
/ ontrialbegin = [
    if (values.feedback == 1 || values.feedback == 2 || values.feedback == 5) {
        text.feedback.textcolor = green;
    } else {
        text.feedback.textcolor = red;
    };


  if (values.exp_condition == 0) {
   trial.feedback.insertstimulustime(port.feedbackeeg_control, 0);
  } else if (values.exp_condition == 1) {
   trial.feedback.insertstimulustime(port.feedbackeeg_reward, 0);
  } else if (values.exp_condition == 2) {
   trial.feedback.insertstimulustime(port.feedbackeeg_punishment, 0);
  };
]
/ posttrialpause = values.fixediti
/ stimulusframes = [1 = feedback, total]
/ timeout = values.cueduration + values.targetduration
/ posttrialpause = values.iti
/ recorddata = false
</trial>


I made the changes as you said to send feedback with separate triggers in reward and punishment blocks. I defined a port. However, consistent fixed triggers are not coming in reward and loss blocks. A wide variety of triggers came. What is the problem?

What you are missing is a reset of the stimulus presentation sequence per resetstimulusframes() /ontrialend. See the incentive trial. Anything you add to the stimulus presentation sequence  persists and is cumulative otherwise.

/ ontrialend = [
    trial.feedback.resetstimulusframes();
]


See the Programmer's Manual, page 78 and onwards.




I want to define a condition in this section.

<trial feedback>
/ ontrialbegin = [


  trial.feedback.insertstimulustime(text.debug_feedback, 0);
  if (values.exp_condition == 0) {
   trial.feedback.insertstimulustime(port.feedbackeeg_control, 0);
  } else if (values.exp_condition == 1) {

   trial.feedback.insertstimulustime(port.feedbackeeg_reward, 0);
  } else if (values.exp_condition == 2) {
   trial.feedback.insertstimulustime(port.feedbackeeg_punishment, 0);
  };


  if (values.feedback == 1 || values.feedback == 2 || values.feedback == 5) {
   text.feedback.textcolor = green;
  } else {
   text.feedback.textcolor = red;
  };
]


if nonincentive cue comes, feedbackeeg_control comes
<port feedbackeeg_control>
/ port = COM6
/ subport = data
/ items = ("00001111")
</port>

when incentive cue comes, feedbackeeg_reward comes

<port feedbackeeg_reward>
/ port = COM6
/ subport = data
/ items = ("00010000")
</port>

what should I do for this?

You should be sufficiently familair with your script by now. So: Do you have the incentive condition in a variable (a value) somewhere, like the exp_condition? Which variable is that?

<trial feedback>
/ ontrialbegin = [



  if (values.exp_condition == 0) {
   trial.feedback.insertstimulustime(port.feedbackeeg_control, 0);
  }
  else if (values.exp_condition == 1) {
   if (values.feedback == 1) {
    trial.feedback.insertstimulustime(port.feedbackeeg_reward1, 0);
   }
   else if (values.feedback == 3) {
    trial.feedback.insertstimulustime(port.feedbackeeg_reward3, 0);
   }
   else if (values.feedback == 2 || values.feedback == 4) {
    trial.feedback.insertstimulustime(port.feedbackeeg_control, 0);
   }
  }

  else if (values.exp_condition == 2) {
   if (values.feedback == 5) {
    trial.feedback.insertstimulustime(port.feedbackeeg_punishment5, 0);
   }
   else if (values.feedback == 6) {
    trial.feedback.insertstimulustime(port.feedbackeeg_punishment6, 0);
   }
   else if (values.feedback == 2 || values.feedback == 4) {
    trial.feedback.insertstimulustime(port.feedbackeeg_control, 0);
   }
  }

  if (values.feedback == 1 || values.feedback == 2 || values.feedback == 5) {
   text.feedback.textcolor = green;
  } else {
   text.feedback.textcolor = red;
  }
]
values.exp condition == 2 feedback triggers do not come.
values.exp condition == 1 also comes. Could this be because else cannot pass from if to another?
What should I do for this?

I got it done, no need, thanks
GO

Merge Selected

Merge into selected topic...



Merge into merge target...



Merge into a specific topic ID...




Reading This Topic
1 active, 1 guest, 0 members, 0 anonymous
No members currently viewing this topic!

Explore
Messages
Mentions
Search