test suite results
Hello everyone,
I tried the expyriment test.suite on three different operating systems (Windows 10, unbuntu 18.04, and a Mac version) and I got visual_timing_inaccuracy of 7ms and a variable timing delay of >=95% on all systems. When we tried the Open Sesame test suite with the psychopy backend we had (on the Mac) a 0ms inaccuracy...
Here is the whole protocol of the test on the Linux computer: (had to copy and paste since I couldn't upldoad the file - deleted the opengl extension and the actual timing - if needed can copy below)
hardware_audio_card: HDA-Intel - HDA Intel PCH
hardware_cpu_architecture: x86_64
hardware_cpu_details: Intel(R) Core(TM) i7-6700 CPU @ 3.40GHz
hardware_cpu_type: x86_64
hardware_disk_space_free: 858079 MB
hardware_disk_space_total: 930177 MB
hardware_internet_connection: Yes
hardware_memory_free: 30845 MB
hardware_memory_total: 32045 MB
hardware_ports_parallel: ['parport0']
hardware_ports_parallel_driver: pyparallel
hardware_ports_serial: [<serial.tools.list_ports_linux.SysFS object at 0x7ff85a40b630>, <serial.tools.list_ports_linux.SysFS object at 0x7ff85a416ef0>, <serial.tools.list_ports_linux.SysFS object at 0x7ff85a416dd8>]
hardware_video_card:
os_architecture: 64bit
os_details: XFCE, xubuntu
os_name: Ubuntu
os_platform: Linux
os_release: 5.0.0-27-generic
os_version: 18.04
python_expyriment_build_date: Thu Mar 9 13:48:59 2017 +0100
python_expyriment_revision: c4963ac
python_expyriment_version: 0.9.0
python_mediadecoder_version:
python_numpy_version: 1.17.2
python_pil_version: 6.1.0
python_pygame_version: 1.9.6
python_pyopengl_version: 3.1.0
python_pyparallel_version: 0.3
python_pyserial_version: 3.4
python_sounddevice_version: 0.3.13
python_version: 3.6.8
settings_folder: None
testsuite_visual_flipping_user: 1
testsuite_visual_opengl: 2
testsuite_visual_opengl_renderer: b'Mesa DRI Intel(R) HD Graphics 530 (Skylake GT2) '
testsuite_visual_opengl_vendor: b'Intel Open Source Technology Center'
testsuite_visual_opengl_version: b'3.0 Mesa 19.0.8'
testsuite_visual_pygame_driver: x11
testsuite_visual_pygame_screensize: (2944, 1080)
testsuite_visual_sync_refresh_rate: 61.0 Hz
testsuite_visual_timing_actual: [#deleted cause rounded values below in timing_todo]
testsuite_visual_timing_delay_histogram: {0: 180}
testsuite_visual_timing_delayed: 95.0 %
testsuite_visual_timing_inaccuracy: 7 ms
testsuite_visual_timing_todo: [46, 49, 46, 15, 17, 32, 23, 58, 8, 16, 18, 11, 8, 39, 31, 6, 13, 48, 0, 3, 19, 3, 42, 30, 20, 2, 58, 48, 36, 19, 55, 48, 35, 26, 44, 22, 29, 31, 36, 50, 13, 43, 54, 27, 37, 43, 39, 38, 55, 41, 1, 42, 12, 22, 53, 41, 18, 8, 5, 40, 52, 3, 15, 6, 17, 29, 58, 7, 9, 33, 32, 36, 30, 57, 45, 45, 47, 44, 35, 46, 13, 27, 7, 34, 15, 40, 53, 44, 17, 14, 16, 50, 56, 57, 49, 12, 7, 14, 5, 55, 38, 42, 25, 23, 37, 33, 38, 24, 4, 26, 14, 32, 45, 12, 0, 52, 20, 24, 10, 6, 51, 51, 10, 25, 21, 21, 33, 34, 20, 5, 47, 49, 26, 54, 22, 11, 28, 47, 10, 16, 51, 59, 31, 24, 4, 37, 54, 28, 59, 53, 39, 56, 9, 35, 27, 59, 0, 40, 4, 21, 2, 1, 57, 23, 29, 56, 43, 11, 9, 19, 18, 2, 50, 25, 1, 28, 34, 41, 30, 52]
My questions: I don't really understand the results and what effects them - the explanation of within the documentations don't really help, since they only state what the output "visual_timing_inaccuracy" tests but not what can cause this value to be good (green - 0ms) or bad or what to do when it is bad) I read somewhere that the graphics card can cause a inaccuracy - all three systems have an internal graphics card, but that would not explain why we got a 0ms inaccuracy when using the psychopy backend within open sesame?
Can someone help me interpret the results and possible causes for the difference? My experiment is finished in expyriment but with these test results we cannot trust it...
Thank you!
Comments
Hi there,
Quick explanation first:
Accurate stimulus presentation reporting in Expyriment is achieved by blocking the code execution of the
present
method of the stimulus, until the actual physical drawing of the stimulus on the display happens. That is, the method only returns once this happened. Since the display also should only write when the vertical retrace is at the left top, and since we know the refresh rate of the screen, Expyriment can test, when the present method returns for any two stimulis1
ands2
presented after each other. If everything works correctly, then once s1
returns, it must take exactly one refresh rate before s2
can return. If this is not the case, there is an inaccuracy in reporting (meaning, the method just returns immediately without waiting for the actual physical change to happen), and we can measure the average inaccuracy by repeating that test several times.Now to solving your inaccuracy problem:
Have you tried using alternative blocking in Expyriment (
expyriment.control.defaults.open_gl = 3
)? If I remember correctly, then this should be equivalent to how PsychoPy blocks on the vertical retrace. Hence, this should at least bring your Mac results in line with what you measured with PsychoPy. It might also do the trick for the other OS. There are two ways to run the test suite in alternative blocking mode:(1) From within Python:
(2) From outside of Python:
python -m expyriment.cli -3T
If that does not help on your other machines, then you should make sure that the video card settings (using your video card vendor's configuration tool) have any form of power saving switched off, and vsyn switched on.
If this still does not lead to proper stimulus presentation reporting accuracy, then it might also be that your video card just does not allow blocking on the vertical retrace via OpenGL. While rare, we have seen this at least once with an Intel integrated video card. We have generally good experiences though with Nvidia.
I hope that helps. Let me know if you need further help.