Millisecond Forums

problem with variable speed micro expression task: is there a way to let inquisit check whether computers are fast enough?

https://forums.millisecond.com/Topic13652.aspx

By CharlotteV - 6/24/2014

Hello, we have a problem with a micro-expressions task. The task shows neutral faces and than a facial emotion is shown for only 67 or 120 milliseconds (depending on condition). Participants are asked which emotion it was. One of our colleagues owns a laptop of about 7 years old and this laptop does not show the facial emotions for only 67 or 120 milliseconds (which is really just a flash) but shows them a lot longer so that it becomes really easy to recognize them. Since people can complete our task online it is up to them which computer they use and we are now worried about the reliability of our task when it is executed on different, and sometimes perhaps old, computers. The specifications of my colleagues laptop are: Samsung R510, Intel Duo Core T5750 2 GHZ, Window Vista, Graphic card: Nvidia Geforce 9200M GS (assigned video memory 256 mb, total available graphic memory 1533mb), Firmware 175.97. We tried the task online as well as offline and there was no difference. 


We hope someone can help us out! We would like to know:

(1) what can be the cause of the variability in speed? If we know more about this we can perhaps tell our participants not to use specific types of computers.

(2) Or even better: is there a way in which Inquisit can detect whether computers are fast enough for this task en show a warning otherwise? Or only present the task if the computer is fast enough? If so, please post the code!


Many thanks!

By Dave - 6/24/2014

(1) what can be the cause of the variability in speed? If we know more about this we can perhaps tell our participants not to use specific types of computers.


Primarily the display adapter's (i.e. graphics card) refresh rate. Figure out what the refresh rate is on the given machine and calculate whether it can achieve the given timings or not. You should also analyze the various stimulusonsets in the data file. You should also make sure the system's graphics drivers and DirectX environment are in working order and up-to-date.


(2) Or even better: is there a way in which Inquisit can detect whether computers are fast enough for this task en show a warning otherwise? Or only present the task if the computer is fast enough? If so, please post the code!

Things like refresh rate are exposed via the <display> element, other general machine information is exposed through the <computer> element, all of which you will find detailed in the language reference. You can log the various exposed properties to the data file and/or do any kind of conditional logic you desire based upon them.

<data>
/ columns = [..., display.refreshrate, computer.cpuspeed, computer.timerresolution, ...]
...
</data>
By seandr - 6/25/2014

A couple of other things:
1) What version of Inquisit are you using? If you aren't using the latest (4.0.6), you should update and see if the problem persists.
2) Would it be possible to send us your script along with any image or media files it uses? Possibly there might be some optimizations we can make.

Occasionally we've encountered video cards that haven't performed well on particular operating systems. The fact that you are using Vista is definitely a red flag, especially if the laptop was released during the Windows XP era and not specifically designed for the new graphics system that was introduced in Vista.

-Sean
By CharlotteV - 6/26/2014

Thanks for your replies Dave & seandr!

Seandr, I sent you a PM about sending codes. Please let me know what you think of it. Thanks!
By CharlotteV - 6/26/2014

Was discussing our variable speed problem with someone and wondered whether it is possible to let Inquisit register how long all of the images are in fact shown on the screen? Is this possible? Does anyone know the code for this? Thanks again. 
By CharlotteV - 6/26/2014

The idea behind is that we can than later exclude the participants whose computers showed the pictures longer than we intended. 
By Dave - 6/27/2014

You should be able to derive that from the logged stimulusonsets in the data file.
By CharlotteV - 6/29/2014

Thanks for your suggestion, but we cannot find anything called 'stimulusonset' in our outputfile. I will send you our testfile. We filled in our questionaire ourselves several times with number 99999. 
Our question concerns the micro expression task and the records on date 62014 12:39 by subject 99999 were the ones in which the facial emotions were shown much longer than they were supposed to. On this same day in the evening (around 23:10) we tried AGAIN with a different computer (so also subject 99999). This time the emotional faces were shown in a flash (as they were intended). So what we hope now is to find a difference between the micro expression data at 12:39 and 23:10 so that we can check our further data and are able to judge in which cases the task is reliable and in which cases it is not. I hope you can help us out! 

If you do not find anything in our testfile, would you be willing to have a look at our code? I would prefer to send it to you by email or PM if that's all right and not post it on this forum, for it is not my own task. 

By Dave - 6/29/2014

If you have decided to exclude stimulus onsets from being logged via your script's <data> element and its /columns attribute, there is no way to derive them ex post facto. Instead you should adjust your <data> logging accordingly for any future data collection.

For details on customizing data output and the available metrics, please refer to the language reference for the <data> element, its /columns attribute as well as the topic on Inquisit's default data recording scheme.
By CharlotteV - 6/30/2014

Ok thanks for checking. We did not decide to remove it or anything but just borrowed this task from other researchers; I don't know why they removed it.... But now we want to start logging stimulus onsets asap because it is really important to us. So if you or someone else could please give us the code? We tried to add it ourselves:

<data>
/columns=[date, time, subject, build, blocknum, blockcode, trialnum, values.actor, trialcode, values.answer, values.correct, values.neutralLatency,values.emotionLatency, stimulusonset]
/format=tab
</data>

But .... now if we test the task we see just an added column with only 2's in it. What are we doing wrong?

Thanks!
By Dave - 6/30/2014

You need to add as many 'stimulusonset' columns as your <trial>s present stimuli. I.e. with

<trial mytrial>
/ stimulustimes = [0=a; 500=b; 1000=c]
...
</trial>

<data>
/ columns = [..., stimulusonset, ...]
...
</data>

will only capture the onset for 'a', while

/ columns = [..., stimulusonset, stimulusonset, ...]

will capture onsets for 'a' and 'b', and

/ columns = [..., stimulusonset, stimulusonset, stimulusonset, ...]

will capture onsets for 'a', 'b' and 'c'.

You will find this covered in the documentation topics mentioned previously. See the 'Remarks' section for the /columns attribute:

"Stimulusnumber, stimulusitem, stimulusonset, and "string" receive special treatment.

The first stimulusnumber specified in the columns attribute indicates that the item number of the first stimulus appearing on the current trial should be recorded. The second stimulusnumber indicates that the item number of the second stimulus presented on the trial should be recorded, and so on. If no 1st, 2nd, 3rd, etc. stimulus is presented on a given trial, a '0' is recorded.

Similarly, the first stimulusitem specified in the columns attribute indicates that the actual item presented by the first stimulus appearing on the current trial should be recorded. If the stimulus is <text> or <port>, the actual item is recorded. If the stimulus is a <sound>, <picture>, or <video>, the item's filename is recorded. If the stimulus is a <shape>, the name of the shape is recorded. Like stimulusnumber, each successive stimulusitem records the item from each successive stimulus presented on the trial. If no 1st, 2nd, 3rd, etc. stimulus is presented on a given trial, a '0' is recorded.

Similarly, the first stimulusonset specified in the columns attribute indicates that the onset time of the first stimulus appearing on the current trial should be recorded."


By CharlotteV - 6/30/2014

Thanks. Our format looks unfortunately a bit different from the one you described. I sent it to you in a pm. We would be very grateful if you can show us how it is done in our case. Since it is not our own task, could you please not put our syntax public? Many thanks!




By Dave - 6/30/2014

FYI: I have received & responded to your PM.
By CharlotteV - 7/1/2014

Dave, thanks for your quick response! Now we tried one of your earlier suggestions. The results of the laptop which showed the pictures much longer than the intended 67 ms (laptop 1) are:
display.refreshrate: 60   
computer.cpuspeed: 1995   
computer.timerresolution: 0,0000698412787100036

The results of a laptop that shows the intended 'flash' (laptop 2):
display.refreshrate: 60   
computer.cpuspeed: 1896   
computer.timerresolution: 0.0005401708884622739

A third computer (not a laptop) which also shows the intended flash has results:
display.refreshrate: 60   
computer.cpuspeed: 3193
computer.timerresolution: 0,0002793651148400146

So how to interpret these results? Do you (or anyone else) know whether these results are related to our problem that on laptop 1 our emotionrecognitiontask does not function properly and the facial emotion pictures are shown for much longer than the intended 67 milliseconds? I do notice that the timerresolution of computer 1 seems low compared to the others but don't know whether this is a meaningful difference.

Thanks!




By Dave - 7/1/2014

Those results do not indicate any problem with the affected machine and as such do not offer any indication with respect to the underlying issue. I would (still) consider a problem with the machine's display system (graphics card hardware, its driver, interaction with the OS) the most likely culprit. Has the system's display driver been updated to the latest release version available from the vendor?

Also, what happens when you examine the results of a *different* script on the affected machine? You could code up a quick, simple script that displays the same image stimuli used in your existing script in a simple <trial>

<trial sometrial>
/ stimulustimes = [0=image; 67=blank]
...
</trial>

and examine the reported onsets.