Problem with Bits#: Failure to converge on identity LUT

Hi everybody,

Background:
Back in September 2017, andreagrant (my supervisor) submitted this post to the PsychoPy discourse. Essentially, she was trying to set up a Bits# box with Psychopy (1.85.2) on a Mac Pro running OS 10.12. However, whenever she opened a window through PsychoPy, connected to Bits#, and put it in mono++ mode, PsychoPy was unable to converge on a true identity LUT (i.e., was unable to pass the checkConfig section in bits.py). Later on in the same thread, she reported being able to pass checkConfig by using a different Mac with an earlier OS version. However, she was never able to pass checkConfig using the newer OS where the problem was originally encountered.

Problem Description:
Currently, we are at a point where we would like to update our computers to a more recent OS (i.e., Catalina or later). But before updating, we need to understand and hopefully resolve the aforementioned LUT convergence problem. Using a Mac Pro with OS 10.15.7 (Catalina), PsychoPy 1.85.2, and the same bits# box, I was able to replicate the original identity LUT convergence warning (see below) that andreagrant encountered in 2017. I plotted the results of the attempted LUT optimization and posted them below. Based on my observations, PsychoPy is very close to converging on an identity LUT, but keeps missing by a very small margin. In fact, the error seems localized to one pixel (pixel 129 out of 255). Attached to this post is a file titled CurrentLUT.xlsx. This file contains the identity LUT that was almost optimized (the error is in the 129th row).

Request:
At this point, I’ve reached the limits of my troubleshooting capabilities and was hoping that someone with more expertise could help me resolve this problem. On the original 2017 post, Jon provided a very useful explanation of the problem, but it seemed that, at the time, there was no specific solution. Has this changed at all since 2017?

Thanks in advance for your time, and please let me know if you require further information on my end!

Best,
Josh Stim

Failed LUT Convergence Warning (Copy/Pasted from Output Window):
################ Running: /Users/105tuser/Documents/bits++test #################
2021-01-21 12:56:16.467 python[4503:60470] ApplePersistenceIgnoreState: Existing state will not be touched. New state will be written to (null)
We need to run some tests on your graphics card (hopefully just once).
The BitsSharp will go into status mode while this is done.
It can take a minute or two…
3.1971 WARNING no config file yet for <psychopy.hardware.crs.bits.BitsSharp object at 0x1083f15d0>
3.1971 WARNING The graphics card or its driver has changed. We’ll re-check the identity LUT for the card
5.4118 WARNING getVideoLine() timed out: only found 0 pixels in 1.00 s
6.4120 WARNING getVideoLine() timed out: only found 0 pixels in 1.00 s
Checking ‘0-65535’ LUT:mean err = 0.242 per LUT entry
Checking ‘1-65536’ LUT:mean err = 0.242 per LUT entry
Checking ‘intel’ LUT:mean err = 6.441 per LUT entry
Checking ‘0-255’ LUT:mean err = 0.223 per LUT entry
Best was ‘0-255’ LUT (mean err = 0.223). Optimising that…
-0.22265625 -0.09375000 -0.03125000 -0.00781250 -0.00781250 -0.00781250 -0.00781250 -0.00781250 -0.00781250 -0.00781250 -0.00781250 -0.00781250 -0.00781250 -0.00781250 -0.00781250 -0.00781250 -0.00781250 -0.00781250 -0.00781250 -0.00781250 -0.00781250 -0.00781250 -0.00781250 -0.00781250 -0.00781250 -0.00781250 -0.00781250 -0.00781250 -0.00781250 -0.00781250 -0.00781250 -0.00781250 -0.00781250 -0.00781250 -0.00781250 -0.00781250 -0.00781250 -0.00781250 -0.00781250 -0.00781250 -0.00781250 -0.00390625 -0.00390625… x1000 … failed to converge on a successful identity LUT. This is BAD!

Output when plotResults=1

CurrentLUT
CurrentLUT.xlsx (16.6 KB)