Dragging stimuli and measuring proximity


Author
Message
Psych_Josh
Psych_Josh
Guru (11K reputation)Guru (11K reputation)Guru (11K reputation)Guru (11K reputation)Guru (11K reputation)Guru (11K reputation)Guru (11K reputation)Guru (11K reputation)Guru (11K reputation)
Group: Forum Members
Posts: 85, Visits: 397
Dear Inquisit,

I recently downloaded a script in order to adapt it for my own study (http://www.millisecond.com/download/library/spatialdelayedresponsetask/), where participants will essentially have to click and drag stimuli to their preference. However, instead of images, I would like participants to click and drag a sentence to a destination within the proximity of another, stationary, sentence. Most of the mechanics work; however, there are a few questions/issues:
1) Is there a way to present stimuli in a fashion that the text would be able to overlap one another, such that the dragged text does not erase the stationary text (I have tried using the text as an image with a transparent background to no avail)?
2) To measure the proximity, I have placed a black circle at the beginning of each sentence, such that the participant is instructed to use the circle as a guide to how close/far one sentence is from the other. How does one measure the proximity of one stimulus to another, in relation to the participants own monitor (as this will be conducted as an online study)? Currentlly

I have attached my script in case it is useful. The answer may lie within the linked script, but unfortunately it is way beyond my Inquisit comprehension at the moment, so for that I apologise.

Many thanks in advance,
Josh
Attachments
Study 8.zip (249 views, 40.00 KB)
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: 12K, Visits: 98K
Psych_Josh - Friday, July 21, 2017
Dear Inquisit,

I recently downloaded a script in order to adapt it for my own study (http://www.millisecond.com/download/library/spatialdelayedresponsetask/), where participants will essentially have to click and drag stimuli to their preference. However, instead of images, I would like participants to click and drag a sentence to a destination within the proximity of another, stationary, sentence. Most of the mechanics work; however, there are a few questions/issues:
1) Is there a way to present stimuli in a fashion that the text would be able to overlap one another, such that the dragged text does not erase the stationary text (I have tried using the text as an image with a transparent background to no avail)?
2) To measure the proximity, I have placed a black circle at the beginning of each sentence, such that the participant is instructed to use the circle as a guide to how close/far one sentence is from the other. How does one measure the proximity of one stimulus to another, in relation to the participants own monitor (as this will be conducted as an online study)? Currentlly

I have attached my script in case it is useful. The answer may lie within the linked script, but unfortunately it is way beyond my Inquisit comprehension at the moment, so for that I apologise.

Many thanks in advance,
Josh

Re. #1: You'll want to set the /txbgcolor to transparent.

<text GO1>
/fontstyle = ("Arial", 3.00%)
/txcolor = (black)
/ txbgcolor = transparent
/items = GO1
/position = (50%, 50%)
/size = (90%, 90%)
/ hposition = values.pointx
/ vposition = values.pointy
/erase = false
</text>

<text BO1>
/fontstyle = ("Arial", 3.00%)
/txcolor = (black)
/ txbgcolor = transparent
/items = BO1
/position = (50%, 50%)
/size = (90%, 90%)
/ hposition = values.pointx
/ vposition = values.pointy
/erase = false
</text>

Re. #2: I'm not sure I understand the question. For what it's worth, though, the answer should be in the Spatial Delayed Response script you used as a basis. It calculates the Euclidean distance between the circle that was _presented_  (the cue) and the circle the participant _placed_ (center to center) via its expressions. To see how this works "live", add the debuginfo text element to <trial point>

<trial point>
/ ontrialbegin = [
    if (values.trialtype=="cue")
        values.showcue=2
    else
        values.showcue=1;
    values.pointcount+=1;
    if (values.pointcount==1)
        values.tstart=script.elapsedtime;
]
/ ontrialend = [
    if (trial.point.response!="mousemove")
        values.tend=script.elapsedtime;
    values.pointx=1px*trial.point.responsex;
    values.pointy=1px*trial.point.responsey;
]
/ stimulusframes = [1=clearscreen,fixationcross,cue,cursor, debuginfo]
/ validresponse = (mousemove, lbuttondown)
/ monkeyresponse = ("lbuttondown")
/ numframes = 1
/ recorddata = false
/ branch = [
    if (trial.point.response=="lbuttondown")
        trial.marktrial
    else
        trial.point
]
</trial>

and run the script.

Psych_Josh
Psych_Josh
Guru (11K reputation)Guru (11K reputation)Guru (11K reputation)Guru (11K reputation)Guru (11K reputation)Guru (11K reputation)Guru (11K reputation)Guru (11K reputation)Guru (11K reputation)
Group: Forum Members
Posts: 85, Visits: 397
Dave - Friday, July 21, 2017
Psych_Josh - Friday, July 21, 2017
Dear Inquisit,

I recently downloaded a script in order to adapt it for my own study (http://www.millisecond.com/download/library/spatialdelayedresponsetask/), where participants will essentially have to click and drag stimuli to their preference. However, instead of images, I would like participants to click and drag a sentence to a destination within the proximity of another, stationary, sentence. Most of the mechanics work; however, there are a few questions/issues:
1) Is there a way to present stimuli in a fashion that the text would be able to overlap one another, such that the dragged text does not erase the stationary text (I have tried using the text as an image with a transparent background to no avail)?
2) To measure the proximity, I have placed a black circle at the beginning of each sentence, such that the participant is instructed to use the circle as a guide to how close/far one sentence is from the other. How does one measure the proximity of one stimulus to another, in relation to the participants own monitor (as this will be conducted as an online study)? Currentlly

I have attached my script in case it is useful. The answer may lie within the linked script, but unfortunately it is way beyond my Inquisit comprehension at the moment, so for that I apologise.

Many thanks in advance,
Josh

Re. #1: You'll want to set the /txbgcolor to transparent.

<text GO1>
/fontstyle = ("Arial", 3.00%)
/txcolor = (black)
/ txbgcolor = transparent
/items = GO1
/position = (50%, 50%)
/size = (90%, 90%)
/ hposition = values.pointx
/ vposition = values.pointy
/erase = false
</text>

<text BO1>
/fontstyle = ("Arial", 3.00%)
/txcolor = (black)
/ txbgcolor = transparent
/items = BO1
/position = (50%, 50%)
/size = (90%, 90%)
/ hposition = values.pointx
/ vposition = values.pointy
/erase = false
</text>

Re. #2: I'm not sure I understand the question. For what it's worth, though, the answer should be in the Spatial Delayed Response script you used as a basis. It calculates the Euclidean distance between the circle that was _presented_  (the cue) and the circle the participant _placed_ (center to center) via its expressions. To see how this works "live", add the debuginfo text element to <trial point>

<trial point>
/ ontrialbegin = [
    if (values.trialtype=="cue")
        values.showcue=2
    else
        values.showcue=1;
    values.pointcount+=1;
    if (values.pointcount==1)
        values.tstart=script.elapsedtime;
]
/ ontrialend = [
    if (trial.point.response!="mousemove")
        values.tend=script.elapsedtime;
    values.pointx=1px*trial.point.responsex;
    values.pointy=1px*trial.point.responsey;
]
/ stimulusframes = [1=clearscreen,fixationcross,cue,cursor, debuginfo]
/ validresponse = (mousemove, lbuttondown)
/ monkeyresponse = ("lbuttondown")
/ numframes = 1
/ recorddata = false
/ branch = [
    if (trial.point.response=="lbuttondown")
        trial.marktrial
    else
        trial.point
]
</trial>

and run the script.

Hi Dave,

Many thanks for that - I'm beginning to understand a little more of this script thanks to you, though I fear many elements are still vastly outside my knowledge.

Thanks to the transparency of the text's background, I am able to see that the dragged text and the 'cursor' move synchronously with mouse movements (as you'd expect), however their heavily mismatched in their locations (i.e., the text is far above the cursor) when ideally the text should occur after the cursor, as if the latter represents a bullet point. Is there a way to achieve this?  

This leads into my second question, where, to rephrase more clearly, I would like the 'Error' to represent distance from the beginning of the stationary sentence (i.e., an error of '0' would mean the two texts perfectly overlap), whereas the current '0' point is the most top-left point of the screen. Apologies for asking what is likely a basic math question, however I cannot see how to perform this within the script, so again apologies for my lack of knowledge!

Many thanks in advance,
Josh
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: 12K, Visits: 98K
Psych_Josh - Monday, July 24, 2017
Dave - Friday, July 21, 2017
Psych_Josh - Friday, July 21, 2017
Dear Inquisit,

I recently downloaded a script in order to adapt it for my own study (http://www.millisecond.com/download/library/spatialdelayedresponsetask/), where participants will essentially have to click and drag stimuli to their preference. However, instead of images, I would like participants to click and drag a sentence to a destination within the proximity of another, stationary, sentence. Most of the mechanics work; however, there are a few questions/issues:
1) Is there a way to present stimuli in a fashion that the text would be able to overlap one another, such that the dragged text does not erase the stationary text (I have tried using the text as an image with a transparent background to no avail)?
2) To measure the proximity, I have placed a black circle at the beginning of each sentence, such that the participant is instructed to use the circle as a guide to how close/far one sentence is from the other. How does one measure the proximity of one stimulus to another, in relation to the participants own monitor (as this will be conducted as an online study)? Currentlly

I have attached my script in case it is useful. The answer may lie within the linked script, but unfortunately it is way beyond my Inquisit comprehension at the moment, so for that I apologise.

Many thanks in advance,
Josh

Re. #1: You'll want to set the /txbgcolor to transparent.

<text GO1>
/fontstyle = ("Arial", 3.00%)
/txcolor = (black)
/ txbgcolor = transparent
/items = GO1
/position = (50%, 50%)
/size = (90%, 90%)
/ hposition = values.pointx
/ vposition = values.pointy
/erase = false
</text>

<text BO1>
/fontstyle = ("Arial", 3.00%)
/txcolor = (black)
/ txbgcolor = transparent
/items = BO1
/position = (50%, 50%)
/size = (90%, 90%)
/ hposition = values.pointx
/ vposition = values.pointy
/erase = false
</text>

Re. #2: I'm not sure I understand the question. For what it's worth, though, the answer should be in the Spatial Delayed Response script you used as a basis. It calculates the Euclidean distance between the circle that was _presented_  (the cue) and the circle the participant _placed_ (center to center) via its expressions. To see how this works "live", add the debuginfo text element to <trial point>

<trial point>
/ ontrialbegin = [
    if (values.trialtype=="cue")
        values.showcue=2
    else
        values.showcue=1;
    values.pointcount+=1;
    if (values.pointcount==1)
        values.tstart=script.elapsedtime;
]
/ ontrialend = [
    if (trial.point.response!="mousemove")
        values.tend=script.elapsedtime;
    values.pointx=1px*trial.point.responsex;
    values.pointy=1px*trial.point.responsey;
]
/ stimulusframes = [1=clearscreen,fixationcross,cue,cursor, debuginfo]
/ validresponse = (mousemove, lbuttondown)
/ monkeyresponse = ("lbuttondown")
/ numframes = 1
/ recorddata = false
/ branch = [
    if (trial.point.response=="lbuttondown")
        trial.marktrial
    else
        trial.point
]
</trial>

and run the script.

Hi Dave,

Many thanks for that - I'm beginning to understand a little more of this script thanks to you, though I fear many elements are still vastly outside my knowledge.

Thanks to the transparency of the text's background, I am able to see that the dragged text and the 'cursor' move synchronously with mouse movements (as you'd expect), however their heavily mismatched in their locations (i.e., the text is far above the cursor) when ideally the text should occur after the cursor, as if the latter represents a bullet point. Is there a way to achieve this?  

This leads into my second question, where, to rephrase more clearly, I would like the 'Error' to represent distance from the beginning of the stationary sentence (i.e., an error of '0' would mean the two texts perfectly overlap), whereas the current '0' point is the most top-left point of the screen. Apologies for asking what is likely a basic math question, however I cannot see how to perform this within the script, so again apologies for my lack of knowledge!

Many thanks in advance,
Josh

> Thanks to the transparency of the text's background, I am able to see that the dragged text and the 'cursor' move synchronously with mouse movements
> (as you'd expect), however their heavily mismatched in their locations (i.e., the text is far above the cursor)
> when ideally the text should occur after the cursor, as if the latter represents a bullet point. Is there a way to achieve this?

Your /size attributes in the <text> elements specify a _bounding_ rectangle. That bounding rectangle is 90% of the respective screen dimensions in your case.
That is what is moved.

<text GO1>
/fontstyle = ("Arial", 3.00%)
/txcolor = (black)
/ txbgcolor = transparent
/items = GO1
/position = (50%, 50%)
/size = (90%, 90%)
/ hposition = values.pointx
/ vposition = values.pointy
/erase = false
</text>

To control how the actual text item is position _within_ that bounding rectangle, use the <text> element's /hjustify and /vjustify attributes. If you want it centered within the rectangle, set both to center:

<text GO1>
/fontstyle = ("Arial", 3.00%)
/txcolor = (black)
/ txbgcolor = transparent
/items = GO1
/position = (50%, 50%)
/size = (90%, 90%)
/ hjustify = center
/ vjustify = center

/ hposition = values.pointx
/ vposition = values.pointy
/erase = false
</text>

What you'll ultimately want to end up with is having two identically sized rectangles -- one for the original sentence in the background, one with sentence to "move around" -- you can then measure the distance between their respective centers, i.e. how precisely they overlap / how much their positions differ in pretty much the same way as is done in the SDRT with the two points (the reference cue and the one placed by the participant). That part is nothing daunting math-wise, all the expressions do is essentially this: https://www.whitman.edu/mathematics/calculus_online/section01.02.html


Edited 7 Years Ago by Dave
Psych_Josh
Psych_Josh
Guru (11K reputation)Guru (11K reputation)Guru (11K reputation)Guru (11K reputation)Guru (11K reputation)Guru (11K reputation)Guru (11K reputation)Guru (11K reputation)Guru (11K reputation)
Group: Forum Members
Posts: 85, Visits: 397
Psych_Josh - Monday, July 24, 2017
Dave - Friday, July 21, 2017
Psych_Josh - Friday, July 21, 2017
Dear Inquisit,

I recently downloaded a script in order to adapt it for my own study (http://www.millisecond.com/download/library/spatialdelayedresponsetask/), where participants will essentially have to click and drag stimuli to their preference. However, instead of images, I would like participants to click and drag a sentence to a destination within the proximity of another, stationary, sentence. Most of the mechanics work; however, there are a few questions/issues:
1) Is there a way to present stimuli in a fashion that the text would be able to overlap one another, such that the dragged text does not erase the stationary text (I have tried using the text as an image with a transparent background to no avail)?
2) To measure the proximity, I have placed a black circle at the beginning of each sentence, such that the participant is instructed to use the circle as a guide to how close/far one sentence is from the other. How does one measure the proximity of one stimulus to another, in relation to the participants own monitor (as this will be conducted as an online study)? Currentlly

I have attached my script in case it is useful. The answer may lie within the linked script, but unfortunately it is way beyond my Inquisit comprehension at the moment, so for that I apologise.

Many thanks in advance,
Josh

Re. #1: You'll want to set the /txbgcolor to transparent.

<text GO1>
/fontstyle = ("Arial", 3.00%)
/txcolor = (black)
/ txbgcolor = transparent
/items = GO1
/position = (50%, 50%)
/size = (90%, 90%)
/ hposition = values.pointx
/ vposition = values.pointy
/erase = false
</text>

<text BO1>
/fontstyle = ("Arial", 3.00%)
/txcolor = (black)
/ txbgcolor = transparent
/items = BO1
/position = (50%, 50%)
/size = (90%, 90%)
/ hposition = values.pointx
/ vposition = values.pointy
/erase = false
</text>

Re. #2: I'm not sure I understand the question. For what it's worth, though, the answer should be in the Spatial Delayed Response script you used as a basis. It calculates the Euclidean distance between the circle that was _presented_  (the cue) and the circle the participant _placed_ (center to center) via its expressions. To see how this works "live", add the debuginfo text element to <trial point>

<trial point>
/ ontrialbegin = [
    if (values.trialtype=="cue")
        values.showcue=2
    else
        values.showcue=1;
    values.pointcount+=1;
    if (values.pointcount==1)
        values.tstart=script.elapsedtime;
]
/ ontrialend = [
    if (trial.point.response!="mousemove")
        values.tend=script.elapsedtime;
    values.pointx=1px*trial.point.responsex;
    values.pointy=1px*trial.point.responsey;
]
/ stimulusframes = [1=clearscreen,fixationcross,cue,cursor, debuginfo]
/ validresponse = (mousemove, lbuttondown)
/ monkeyresponse = ("lbuttondown")
/ numframes = 1
/ recorddata = false
/ branch = [
    if (trial.point.response=="lbuttondown")
        trial.marktrial
    else
        trial.point
]
</trial>

and run the script.

Hi Dave,

Many thanks for that - I'm beginning to understand a little more of this script thanks to you, though I fear many elements are still vastly outside my knowledge.

Thanks to the transparency of the text's background, I am able to see that the dragged text and the 'cursor' move synchronously with mouse movements (as you'd expect), however their heavily mismatched in their locations (i.e., the text is far above the cursor) when ideally the text should occur after the cursor, as if the latter represents a bullet point. Is there a way to achieve this?  

This leads into my second question, where, to rephrase more clearly, I would like the 'Error' to represent distance from the beginning of the stationary sentence (i.e., an error of '0' would mean the two texts perfectly overlap), whereas the current '0' point is the most top-left point of the screen. Apologies for asking what is likely a basic math question, however I cannot see how to perform this within the script, so again apologies for my lack of knowledge!

Many thanks in advance,
Josh

Hi Dave,

Many thanks for your assistance - all appears to be working.

Best,
Josh
GO

Merge Selected

Merge into selected topic...



Merge into merge target...



Merge into a specific topic ID...




Reading This Topic

Explore
Messages
Mentions
Search