Why did an unexpected marker appear here?


Author
Message
Yufan
Yufan
Associate Member (76 reputation)Associate Member (76 reputation)Associate Member (76 reputation)Associate Member (76 reputation)Associate Member (76 reputation)Associate Member (76 reputation)Associate Member (76 reputation)Associate Member (76 reputation)Associate Member (76 reputation)
Group: Forum Members
Posts: 8, Visits: 46
Hi!

Dear all,

When I ran my experiment, an unexpected marker appeared. However, it was not a response marker; it was a type of marker triggered when the stimulus was presented. Therefore, I am certain it is an external problem. My code is provided below. Please help me resolve this issue.

//5 for new test
<port newtest>
/ port = LPT2
/ subport = data
/ items = ("00000101")
</port>

//6 for prac
<port prac>
/ port = LPT2
/ subport = data
/ items = ("00000110")
</port>

//7 for learning response
<port learnr>
/ port = LPT2
/ subport = data
/ items = ("00000111")
</port>

<trial prac_learning>
/ stimulustimes= [0=prac_learning, prac; 2000=white]
/ beginresponsetime = 0
/ validresponse = (parameters.key_small, parameters.key_large)
/ responsemessage = (parameters.key_small, learnr, 0)
/ responsemessage = (parameters.key_large, learnr, 0)
/ responseinterrupt = trial
/ trialduration = 2500
</trial>

<trial prac_testing>
/ stimulustimes = [0=prac_testing, prac; 2000=white, old, similar, new, testq]
/ beginresponsetime = 2000
/ validresponse = (values.key_old,values.key_similar, values.key_new)
/ responsemessage = (values.key_old, oldr, 0)
/ responsemessage = (values.key_similar, simr, 0)
/ responsemessage = (values.key_new, newr, 0)
/ responseinterrupt = immediate
/ posttrialpause = 300
</trial>



Sorry, I can’t flip this image.
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: 104K
Yufan - 12/5/2024
Hi!

Dear all,

When I ran my experiment, an unexpected marker appeared. However, it was not a response marker; it was a type of marker triggered when the stimulus was presented. Therefore, I am certain it is an external problem. My code is provided below. Please help me resolve this issue.

//5 for new test
<port newtest>
/ port = LPT2
/ subport = data
/ items = ("00000101")
</port>

//6 for prac
<port prac>
/ port = LPT2
/ subport = data
/ items = ("00000110")
</port>

//7 for learning response
<port learnr>
/ port = LPT2
/ subport = data
/ items = ("00000111")
</port>

<trial prac_learning>
/ stimulustimes= [0=prac_learning, prac; 2000=white]
/ beginresponsetime = 0
/ validresponse = (parameters.key_small, parameters.key_large)
/ responsemessage = (parameters.key_small, learnr, 0)
/ responsemessage = (parameters.key_large, learnr, 0)
/ responseinterrupt = trial
/ trialduration = 2500
</trial>

<trial prac_testing>
/ stimulustimes = [0=prac_testing, prac; 2000=white, old, similar, new, testq]
/ beginresponsetime = 2000
/ validresponse = (values.key_old,values.key_similar, values.key_new)
/ responsemessage = (values.key_old, oldr, 0)
/ responsemessage = (values.key_similar, simr, 0)
/ responsemessage = (values.key_new, newr, 0)
/ responseinterrupt = immediate
/ posttrialpause = 300
</trial>



Sorry, I can’t flip this image.

It may be crosstalk between the stimulus markers and the response markers. Just like any other stimulus, port stimuli remain raised until they are erased at the end of a trial.

To avoid crosstalk, lower the stimulus markers again after some short amount of time by adding a port stimulus to your /stimulustimes after the stimulus marker that sets all bits to low.

Also, in <trial prac_learning>, you need to give your responsemessage stimuli some minimum time. Otherwise these may not be sent at all
Yufan
Yufan
Associate Member (76 reputation)Associate Member (76 reputation)Associate Member (76 reputation)Associate Member (76 reputation)Associate Member (76 reputation)Associate Member (76 reputation)Associate Member (76 reputation)Associate Member (76 reputation)Associate Member (76 reputation)
Group: Forum Members
Posts: 8, Visits: 46
Hi Dave,

I reviewed the data and found that, in addition to the crosstalk between stimulus markers and response markers, some undefined markers, such as DIN21 and DIN31, randomly appeared during EEG recording. I would like to know if this is also caused by crosstalk. To prevent this, can I add a "clear" marker like the following, 10ms after the stimulus appears?
//0 for erase
<port era>
/ port = LPT2
/ subport = data
/ items = ("00000000")
</port>

Also, do I need to add a clear marker for response markers in the trials?

Thank you!
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: 104K
Yufan - 12/9/2024
Hi Dave,

I reviewed the data and found that, in addition to the crosstalk between stimulus markers and response markers, some undefined markers, such as DIN21 and DIN31, randomly appeared during EEG recording. I would like to know if this is also caused by crosstalk. To prevent this, can I add a "clear" marker like the following, 10ms after the stimulus appears?
//0 for erase
<port era>
/ port = LPT2
/ subport = data
/ items = ("00000000")
</port>

Also, do I need to add a clear marker for response markers in the trials?

Thank you!

Yes, you shoud add the 'era' marker to your trial's /stimulustimes, sometime after the onset of the stimulus / stimulus marker. 10ms may be too short to work reliably, I would go for 20ms.

Nothing additonal should be necessary with respect to the response markers.
Yufan
Yufan
Associate Member (76 reputation)Associate Member (76 reputation)Associate Member (76 reputation)Associate Member (76 reputation)Associate Member (76 reputation)Associate Member (76 reputation)Associate Member (76 reputation)Associate Member (76 reputation)Associate Member (76 reputation)
Group: Forum Members
Posts: 8, Visits: 46
Dave - 12/9/2024
Yufan - 12/9/2024
Hi Dave,

I reviewed the data and found that, in addition to the crosstalk between stimulus markers and response markers, some undefined markers, such as DIN21 and DIN31, randomly appeared during EEG recording. I would like to know if this is also caused by crosstalk. To prevent this, can I add a "clear" marker like the following, 10ms after the stimulus appears?
//0 for erase
<port era>
/ port = LPT2
/ subport = data
/ items = ("00000000")
</port>

Also, do I need to add a clear marker for response markers in the trials?

Thank you!

Yes, you shoud add the 'era' marker to your trial's /stimulustimes, sometime after the onset of the stimulus / stimulus marker. 10ms may be too short to work reliably, I would go for 20ms.

Nothing additonal should be necessary with respect to the response markers.

Dave - 12/9/2024
Yufan - 12/9/2024
Hi Dave,

I reviewed the data and found that, in addition to the crosstalk between stimulus markers and response markers, some undefined markers, such as DIN21 and DIN31, randomly appeared during EEG recording. I would like to know if this is also caused by crosstalk. To prevent this, can I add a "clear" marker like the following, 10ms after the stimulus appears?
//0 for erase
<port era>
/ port = LPT2
/ subport = data
/ items = ("00000000")
</port>

Also, do I need to add a clear marker for response markers in the trials?

Thank you!

Yes, you shoud add the 'era' marker to your trial's /stimulustimes, sometime after the onset of the stimulus / stimulus marker. 10ms may be too short to work reliably, I would go for 20ms.

Nothing additonal should be necessary with respect to the response markers.

Thank you!
Yufan
Yufan
Associate Member (76 reputation)Associate Member (76 reputation)Associate Member (76 reputation)Associate Member (76 reputation)Associate Member (76 reputation)Associate Member (76 reputation)Associate Member (76 reputation)Associate Member (76 reputation)Associate Member (76 reputation)
Group: Forum Members
Posts: 8, Visits: 46
Hi Dave,

I am still having trouble resolving the marker crosstalk issue. Here is a part of my code:

For the learning phase, prac is a stimulus marker, era is a clear marker, and white is a white image display. learner is a response marker.
<trial prac_learning>
/ stimulustimes= [0=prac_learning, prac; 50=era; 2000=white]
/ beginresponsetime = 0
/ validresponse = (parameters.key_small, parameters.key_large)
/ responsemessage = (parameters.key_small, learnr, 20)
/ responsemessage = (parameters.key_large, learnr, 20)
/ responseinterrupt = trial
/ trialduration = 2500
/ posttrialpause = 500
</trial>


For the testing phase, prac is still a stimulus marker, while testq and confq are also stimulus markers. conf1r, conf3r, conf5r, as well as oldr, simr, and newr are response markers.
<trial confidence>
/ stimulustimes = [0=conf1, conf3, conf5, confq; 50=era]
/ beginresponsetime = 0
/ validresponse = (values.key_lowc, values.key_midc, values.key_hic)
/ responsemessage = (values.key_lowc, conf1r, 20)
/ responsemessage = (values.key_midc, conf3r, 20)
/ responsemessage = (values.key_hic, conf5r, 20)
/ responseinterrupt = immediate
/ posttrialpause = 500
</trial>
<trial prac_testing>
/ stimulustimes = [0=prac_testing, prac; 50=era; 2000=white, old, similar, new, testq; 2050=era]
/ beginresponsetime = 2000
/ validresponse = (values.key_old,values.key_similar, values.key_new)
/ responsemessage = (values.key_old, oldr, 20)
/ responsemessage = (values.key_similar, simr, 20)
/ responsemessage = (values.key_new, newr, 20)
/ responseinterrupt = immediate
/ correctmessage = (oldr, 20)
/ errormessage = (simr, 20)
/ errormessage = (newr, 20)
/ responseinterrupt = immediate
/ posttrialpause = 300
/ branch = [
    trial.confidence
]
</trial>

Additionally, I want to label which response (old, sim, or new) is correct in the EEG recording. However, my current setup does not achieve this.  What's more, I am using EGI equipment. Could you please advise on how to resolve this issue?

Thank you!
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: 104K
Yufan - 12/10/2024
Hi Dave,

I am still having trouble resolving the marker crosstalk issue. Here is a part of my code:

For the learning phase, prac is a stimulus marker, era is a clear marker, and white is a white image display. learner is a response marker.
<trial prac_learning>
/ stimulustimes= [0=prac_learning, prac; 50=era; 2000=white]
/ beginresponsetime = 0
/ validresponse = (parameters.key_small, parameters.key_large)
/ responsemessage = (parameters.key_small, learnr, 20)
/ responsemessage = (parameters.key_large, learnr, 20)
/ responseinterrupt = trial
/ trialduration = 2500
/ posttrialpause = 500
</trial>


For the testing phase, prac is still a stimulus marker, while testq and confq are also stimulus markers. conf1r, conf3r, conf5r, as well as oldr, simr, and newr are response markers.
<trial confidence>
/ stimulustimes = [0=conf1, conf3, conf5, confq; 50=era]
/ beginresponsetime = 0
/ validresponse = (values.key_lowc, values.key_midc, values.key_hic)
/ responsemessage = (values.key_lowc, conf1r, 20)
/ responsemessage = (values.key_midc, conf3r, 20)
/ responsemessage = (values.key_hic, conf5r, 20)
/ responseinterrupt = immediate
/ posttrialpause = 500
</trial>
<trial prac_testing>
/ stimulustimes = [0=prac_testing, prac; 50=era; 2000=white, old, similar, new, testq; 2050=era]
/ beginresponsetime = 2000
/ validresponse = (values.key_old,values.key_similar, values.key_new)
/ responsemessage = (values.key_old, oldr, 20)
/ responsemessage = (values.key_similar, simr, 20)
/ responsemessage = (values.key_new, newr, 20)
/ responseinterrupt = immediate
/ correctmessage = (oldr, 20)
/ errormessage = (simr, 20)
/ errormessage = (newr, 20)
/ responseinterrupt = immediate
/ posttrialpause = 300
/ branch = [
    trial.confidence
]
</trial>

Additionally, I want to label which response (old, sim, or new) is correct in the EEG recording. However, my current setup does not achieve this.  What's more, I am using EGI equipment. Could you please advise on how to resolve this issue?

Thank you!

I'm sorry, but these bits of code are useless without information on what the suspected crosstalk is. When does it occur, what are the values sent by the relevant markers? What is or are the values recorded by the EEG at the time?

Regarding your 2nd question, that is unanswerable on the basis of the information provided. It is not clear how you determine what the correct response is in any given trial In general, if you want to display a stimulus -- be it a port marker or anything else -- upon a correct response as determined in the trial, you use /correctmessage.

Yufan
Yufan
Associate Member (76 reputation)Associate Member (76 reputation)Associate Member (76 reputation)Associate Member (76 reputation)Associate Member (76 reputation)Associate Member (76 reputation)Associate Member (76 reputation)Associate Member (76 reputation)Associate Member (76 reputation)
Group: Forum Members
Posts: 8, Visits: 46
Dave - 12/10/2024
Yufan - 12/10/2024
Hi Dave,

I am still having trouble resolving the marker crosstalk issue. Here is a part of my code:

For the learning phase, prac is a stimulus marker, era is a clear marker, and white is a white image display. learner is a response marker.
<trial prac_learning>
/ stimulustimes= [0=prac_learning, prac; 50=era; 2000=white]
/ beginresponsetime = 0
/ validresponse = (parameters.key_small, parameters.key_large)
/ responsemessage = (parameters.key_small, learnr, 20)
/ responsemessage = (parameters.key_large, learnr, 20)
/ responseinterrupt = trial
/ trialduration = 2500
/ posttrialpause = 500
</trial>


For the testing phase, prac is still a stimulus marker, while testq and confq are also stimulus markers. conf1r, conf3r, conf5r, as well as oldr, simr, and newr are response markers.
<trial confidence>
/ stimulustimes = [0=conf1, conf3, conf5, confq; 50=era]
/ beginresponsetime = 0
/ validresponse = (values.key_lowc, values.key_midc, values.key_hic)
/ responsemessage = (values.key_lowc, conf1r, 20)
/ responsemessage = (values.key_midc, conf3r, 20)
/ responsemessage = (values.key_hic, conf5r, 20)
/ responseinterrupt = immediate
/ posttrialpause = 500
</trial>
<trial prac_testing>
/ stimulustimes = [0=prac_testing, prac; 50=era; 2000=white, old, similar, new, testq; 2050=era]
/ beginresponsetime = 2000
/ validresponse = (values.key_old,values.key_similar, values.key_new)
/ responsemessage = (values.key_old, oldr, 20)
/ responsemessage = (values.key_similar, simr, 20)
/ responsemessage = (values.key_new, newr, 20)
/ responseinterrupt = immediate
/ correctmessage = (oldr, 20)
/ errormessage = (simr, 20)
/ errormessage = (newr, 20)
/ responseinterrupt = immediate
/ posttrialpause = 300
/ branch = [
    trial.confidence
]
</trial>

Additionally, I want to label which response (old, sim, or new) is correct in the EEG recording. However, my current setup does not achieve this.  What's more, I am using EGI equipment. Could you please advise on how to resolve this issue?

Thank you!

I'm sorry, but these bits of code are useless without information on what the suspected crosstalk is. When does it occur, what are the values sent by the relevant markers? What is or are the values recorded by the EEG at the time?

Regarding your 2nd question, that is unanswerable on the basis of the information provided. It is not clear how you determine what the correct response is in any given trial In general, if you want to display a stimulus -- be it a port marker or anything else -- upon a correct response as determined in the trial, you use /correctmessage.

Crosstalk occurs at any time and always appears before or after a stimulus. It happens during both the encoding and testing phases.

The values of the related markers range from DIN19-31. Excluding DIN23, 28, 30, the following patterns are frequently observed:

DIN22 often appears after DIN6.
DIN20 often appears after DIN4.
DIN27, 29, and 31 often appear after DIN17.
DIN24 and 26 often appear after DIN16.
For reference:

DIN6 is prac.
DIN4 is similartest.
DIN17 is confq.
DIN16 is testq.

Sometimes, defined marker are also crosstalk. such as DIN5, which is a newtest marker.
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: 104K
Yufan - 12/10/2024
Dave - 12/10/2024
Yufan - 12/10/2024
Hi Dave,

I am still having trouble resolving the marker crosstalk issue. Here is a part of my code:

For the learning phase, prac is a stimulus marker, era is a clear marker, and white is a white image display. learner is a response marker.
<trial prac_learning>
/ stimulustimes= [0=prac_learning, prac; 50=era; 2000=white]
/ beginresponsetime = 0
/ validresponse = (parameters.key_small, parameters.key_large)
/ responsemessage = (parameters.key_small, learnr, 20)
/ responsemessage = (parameters.key_large, learnr, 20)
/ responseinterrupt = trial
/ trialduration = 2500
/ posttrialpause = 500
</trial>


For the testing phase, prac is still a stimulus marker, while testq and confq are also stimulus markers. conf1r, conf3r, conf5r, as well as oldr, simr, and newr are response markers.
<trial confidence>
/ stimulustimes = [0=conf1, conf3, conf5, confq; 50=era]
/ beginresponsetime = 0
/ validresponse = (values.key_lowc, values.key_midc, values.key_hic)
/ responsemessage = (values.key_lowc, conf1r, 20)
/ responsemessage = (values.key_midc, conf3r, 20)
/ responsemessage = (values.key_hic, conf5r, 20)
/ responseinterrupt = immediate
/ posttrialpause = 500
</trial>
<trial prac_testing>
/ stimulustimes = [0=prac_testing, prac; 50=era; 2000=white, old, similar, new, testq; 2050=era]
/ beginresponsetime = 2000
/ validresponse = (values.key_old,values.key_similar, values.key_new)
/ responsemessage = (values.key_old, oldr, 20)
/ responsemessage = (values.key_similar, simr, 20)
/ responsemessage = (values.key_new, newr, 20)
/ responseinterrupt = immediate
/ correctmessage = (oldr, 20)
/ errormessage = (simr, 20)
/ errormessage = (newr, 20)
/ responseinterrupt = immediate
/ posttrialpause = 300
/ branch = [
    trial.confidence
]
</trial>

Additionally, I want to label which response (old, sim, or new) is correct in the EEG recording. However, my current setup does not achieve this.  What's more, I am using EGI equipment. Could you please advise on how to resolve this issue?

Thank you!

I'm sorry, but these bits of code are useless without information on what the suspected crosstalk is. When does it occur, what are the values sent by the relevant markers? What is or are the values recorded by the EEG at the time?

Regarding your 2nd question, that is unanswerable on the basis of the information provided. It is not clear how you determine what the correct response is in any given trial In general, if you want to display a stimulus -- be it a port marker or anything else -- upon a correct response as determined in the trial, you use /correctmessage.

Crosstalk occurs at any time and always appears before or after a stimulus. It happens during both the encoding and testing phases.

The values of the related markers range from DIN19-31. Excluding DIN23, 28, 30, the following patterns are frequently observed:

DIN22 often appears after DIN6.
DIN20 often appears after DIN4.
DIN27, 29, and 31 often appear after DIN17.
DIN24 and 26 often appear after DIN16.
For reference:

DIN6 is prac.
DIN4 is similartest.
DIN17 is confq.
DIN16 is testq.

Sometimes, defined marker are also crosstalk. such as DIN5, which is a newtest marker.

Then your system somehow isn't picking up the status changes, including the lowering of all lines by <port era>. For example, in

/ stimulustimes = [0=prac_testing, prac; 50=era; 2000=white, old, similar, new, testq; 2050=era]


you raise prac, which is 00000110 (6 in decimal). 50ms later, the signal should be lowered per era (00000000), but that doesn't seem to work with your hardware / setup. at 2000 testq is raised, which is 00010000.

00000110 and
00010000 combined gives
00010110, which is the DIN22 you mentioned (DIN22 often appears after DIN6).

Try increasing the time between the prac and era markers and also between testq and era.

If that doesn't change anything, it's a hardware or driver malfunction that prevents bits from being lowered.


GO

Merge Selected

Merge into selected topic...



Merge into merge target...



Merge into a specific topic ID...




Reading This Topic

Explore
Messages
Mentions
Search