Please familiarize yourself with the response keys before testing: For 4 directions (tumbling E or Landolt set to “4 choices” in Settings) the cursor keys are fine, for 8 directions the response keys are geographically arranged on a numeric keypad. To abort a test run, press the key ‘5’ twice or <escape>. For reliable results, observe the checklist.
“FrACT” is a visual test battery in form of a free computer program. It uses psychometric methods combined with anti-aliasing and dithering to provide automated, self-paced measurement of visual acuity (Bach 1996), contrast sensitivity and vernier acuity. The progression of optotype sizes is determined by the “Best PEST” strategy. FrACT complies with the European Norm for acuity testing (EN ISO 8596) and is endorsed by the DOG. It is used globally in vision labs, by optometrists, ophthalmologists and in clinical trials (→Who used FrACT) and has been verified in independent laboratories (→Descriptions & Validations).
– Possible optotypes comprise Landolt ring, tumbling E, Sloan letters and faces.
– Results can be displayed as Snellen fraction, decimal acuity, or logMAR; full details can be exported for deeper analysis.
For an overview see this English introduction or eine deutsche Einführung. Detailed information on the program is available in “Bach M (1996) The “Freiburg Visual Acuity Test” – Automatic measurement of the visual acuity. Optometry & Vision Sci 73:49-53” [PDF], more background on acuity testing can be found in this German paper. There is a built-in help file, and a detailed discussion of the various settings here: “FrACT3_Manual.pdf”. Finally, →here (General Pertinent Sources) is a pertinent literature list.
Just about any state-of-the-art computer (be it running the Macintosh operating system, Linux or Windows). For remote input see the “response box” below in Details. If you are using an LCD and want to measure contrast thresholds, be sure the display is not of the 6-bit type (as in many laptops, more); for acuity those would be fine. Make certain that the best possible color depth is chosen.
Nothing; but feedback is warmly appreciated. And please cite it when you’ve used it in scientific settings.
If you used FrACT for your research, please cite it. The “generic” publication is:
Bach M (1996) The “Freiburg Visual Acuity Test” – Automatic measurement of visual acuity. Optometry and Vision Science 73:49–53 [pubmed] [→PDF],
or, more recent:
Bach M (2007) The Freiburg Visual Acuity Test – Variability unchanged by post-hoc re-analysis. Graefe’s Arch Clin Exp Ophthalmol [DOI] [→PDF]
The briefest way to refer to the present page (its URL): <michaelbach.de/fract/>.
If you ran a previous version, all settings in “Setup” may automatically be defaulted in order to update internal structures (depends on the exact versions).
Enter the width of the calibration bar & the observation distance in the “Setup” interface. Be sure to have enough distance from the screen, so pixel resolution does not limit acuity. Also ponder about every entry in the Setup interface and set them appropriately; the defaults can not be optimal for every situation. The Checklist is a must-read, in the “FrACT3_Manual.pdf” all settings are explained in detail.
For the Contrast Test, you also need to go to “Setup>Luminance Linearisation” to linearise luminance (“gamma correction”) before testing. But see below for a cautionary note on the difficulties of contrast testing.
All settings in Setup are automatically saved.
Apart from using the obvious buttons a test run can also be conveniently started from the numerical keypad (digit 5). Enter the position of the appearing Landolt-C's gap via the numerical digit keys. These are spatially mapped to the 8 possible gap positions in an obvious way (“8”=top, “9”=top right, etc.). The digit key “5”, pressed twice, aborts an ongoing test run (and inhibits display of the premature result).
Tumbling E has only 4 directions, the Landolt-C allows 4 or 8. Depending on your application, you may wish to use only the 4 primary gap positions or to supplement it with the four oblique directions; FrACT allows both. Briefly: 4 directions are less easily confused, but guessing probability is higher entailing a higher number of trials; 8 positions allow more rapid determination of visual acuity as guessing probability is lower. Final outcome should be identical, but the number of runs must be adequately chosen, see next item.
Default: 24 trials with 8 gap orientation choices, 30 trials with 4 gap orientations (because the guessing rate is higher). For ‘real’ scientific applications choose 8/30, or, better, repeat each condition (e.g. each eye at 18 trials, ideally in an ABBA scheme) and average. Why are all these numbers divisible by 6? Because every 6th trial is a “bonus trial”, where the optotype is presented at 3 times its current threshold estimate. This keeps your subjects happy, especially since the last trial is thus a ‘success’.
Often one wants different sets of Setups, e.g. for training vs. assessment, for near vs. far vision, for different age ranges, with vs. w/o crowding etc. Rather than change the Setup each time (with the danger to forget something), be informed that the Setup is stored per FrACT file. Thus, if you duplicate (appropriately renaming it) or put a copy in a different location, each will have their ‘personal’ Setup. Thus to switch between different sets of Setups, just quit and start the other version.
The test result is presented on the screen. Additionally, the result can be transferred to the clipboard (in a simple, final-result-only or full-history fashion); so just switching to a spreadsheet program running in the background allows pasting the result. As of version 3.6, TCP/IP-based result transmission is also available, using a standard URL-request GET call.
Experience taught me that contrast testing is technically much more demanding than acuity testing.
- Stray light falling on the screen must be avoided
- Be sure to linearise luminance (“gamma correction”) before you test contrast (go to “Setup>Luminance Linearisation”); the best approach is to employ a screen calibrator (I'm using the Spyder), to calibrate the screen/computer with a gamma of 1.0, and set it so in “Setup>Luminance Linearisation” with the “gamma=1” button.
- In contrast to acuity, the time taken to inspect the optotype plays a sizable role.
- Normal contrast vision is better than normal screen luminance resolution (256 steps are not enough, especially after linearising (“gamma correction”). Like in the “old version”, which runs only on the Macintosh platform, this is now addressed via dithering [Bach M (1997) Anti-aliasing and dithering in the “Freiburg Visual Acuity Test’. Spatial Vision 11:85–89].
However: most portable computers do not even have an 8-bit screen depth, they only have a 6-bit screen depth and overcome this by dithering themselves. This “double dithering” is quite counterproductive. So be sure you have an 8-bit screen, be it LCD, CRT, or OLED.
| Key | Action |
|---|---|
| 5 | start the test as defined in Settings |
| a | start Acuity |
| l | start acuity Letters |
| c | start Contrast |
| v | start Vernier |
| e | start Tumbling E |
| b | aBout |
| h | Help |
| t | Test calibration |
| q | Quit = Exit |
| 55 or <esc> | abort running test |
I am lazy and prefer to start actions without mousing, thus I added a number of shortcuts:
[By 2010, FrACT had been cited 140 times.
By some labs FrACT is routinely used and always cited, thank you, you know how you are. In order to avoid inflating the list below I do not mention each such reference. I rarely find the time to systematically analyse the literature whether FrACT was actually used, so the list is incomplete.]
| 2011-10-27 | 3.7.1b | • added grating test as requested by Jens (work in progress, not yet in the manual) • added timestamps (milliseconds since 1970) to the full history • [3.7.m special version for Paik with long Verniers (40x longer)] |
| 2011-04-29 | 3.7l | preview, work in progress • added display transformations: mirroring vertically and 180° • delt with blocked information storing (due to new Adobe settings) • new flash player module (10.2 with 3.7l) • added “Contrast screening” – calibration accessible via shift key, changed sequence logic, now respects the number of orientations (4/8) • corrected threshold for “red condition” acuity warning in Settings • added visual feedback (growing optotype) • rearranged value/label placement on the settings screen, main screen buttons, response key graphics • removed display size from key settings (caused misunderstanding) • changed default contrast-dia 30→50 arcmin, max 300→999 • internal class rearranging (LandoltC→Optotypes) • various minor improvements • added face files |
| 2010-09-01 | 3.6.3 | • corrected Michelson→Weber contrast calculation: the previous Weber value had been c·W%-times too high (e.g. 1.01% instead of 1.0%, 11% instead of 10%, etc.). Thanks to Prof. von Handorff and his students for spotting this. • This is the last version that runs on Mac OS/PowerPC. |
| 2010-07-29 | 3.6.2 | • added tumbling E • added optional on-line trial info • added persistent history (copied to clipboard with "z") • modernized writing to the clipboard • centered parameter-input in the Setup frame • solved problem of not being able to enter "5" into the subjectID field |
| 2010-03-21 | 3.6beta | • Quit button now labelled "Exit" in Windows • added TCP/IP based results transmission • deleted the flawed and effectless manipulation of presented direction depending on response correctness • added face recognition paradigm (experimental) • improved Alert class from <http://fatal-exception.co.uk/blog/?p=69#more-69> • for FrACT letters the history is now correctly exported, with the letters. Checked LandoltC and SloanC size, they are identical, as should be. |
| 2009-11-11 | 3.5.5 | Quite a number of tiny improvements: • added screen dimension to main screen info • added "force Snellen denominator to 20 ft" on request • added option for colour Landolt Cs on request • set uncalibrated values bold & red in the Setup screen to make them more obvious • set focus to stage (now it responds to keyboard shortcuts after returning from Setup etc.) • now possible to start with numkey-5 irrespective of numlock setting |
| 2009-09-16 | 3.5.4 | made the calibration bar blue; increased PEST-grain from 500 to 5000; added contrast with Weber definition; improved manual |
| 2009-08-20 | 3.5.3 | • fixed background glitch, a regression from the new contrast polarity setting • rearranged the setup a little around the calibration bar |
| 2009-07-19 | 3.5.2 | • added option to set contrast polarity • fixed silly error (fixation target in contrast testing staying on) introduced recently • added option not to go full screen (this can help with multiple screen setups) |
| 2009-05-27 | 3.5 | • fixed errors in the calibration check GUI resulting from the new mask code • renamed "Preferences" into "Setup", put key settings on main screen [all thanks to Daphne McCulloch's thoughtful suggestions] |
| 2009-04-21 | 3.4.3 | • Improved coding around the sound channels (fixed the ‘hang’), cleaned up the Pest code (no performance change, just more elegant :) ) • Added detection of sound capabilities and disabled sound settings when appropriate (does not seem to work correctly) • added a blank (or grey for contrast) mask after the response key. Option in Prefs. Currently fixed at 200 ms. • Keypad now works without numlock • Maximal distance increased (9999 cm instead of 999 cm), • Vernier size now scales with distance (as it should have): 0.5° total height, 0.5 arcmins bar sigma, 0.2 arcmins gap height • separate timeouts for showing the optotype (down to 0.1 s) and for responding to it • and further trivia |
| 2008-12-08 | 3.3 | timeout > 30 seconds now possible (current maximum: 999 s); improved Flash version display; corrected a missing help button |
| 2008-11-16 | 3.2 | ported to Flash CS4, added calibration alert |
| 2008-09-10 | 3.1.3 | fixed a capitalisation issue in a sound resource now ignoring letter capitalisation in shortcuts |
| 2008-09-10 | 3.1.2 | added optional Sloan letters . Range-checked timeout-value (reported by Frank Schmidtborn, more fields need to be checked) |
| 2008-06-20 | 3.1 | All numerical preferences now range-checked corrected the logic in the response key evaluation (didn't stop after first match). Added acuity based on Sloan letters. Rewrote response code to use key-value pairs. |
| 2008-05-30 | 3.0.4 | “auditory feedback when done” now preserved, made sound resources more generic, improved internal debugging |
| 2008-05-06 | 3.0.3 | Corrected time-out (error diagnosed by Frank Schmidtborn), added a positional jitter to vernier test (as suggested by Wolf Harmening) |
| 2008-04-26 | 3.0.2 | Complete re-write of FrACT, now called FrACT3. Reason for re-write was that I wanted to improve the contrast dithering. This entailed updating to the (totally underwhelming) Adobe's Flash CS3 development system. This required changes in nearly every line of code. A major chore, which markedly improved the program internally, while not showing the changes externally. There is also a new icon, thanks to Inga. A comparison in 54 eyes found that acuity results differed between FrACT2 and FrACT3 by ≈0.01 logMAR, thus below noise limit. Contrast testing is improved, the vernier test is being evaluated. |
| 2007-12-24 | 2.3 | fixed a bug of incorrectly formatted Snellen fractions under certain rare conditions |
| 2007-11-19 | 2.2 | re-enabled the “bonus trial” option for the contrast & Vernier test, improved FrACT documentation |
| 2007-10-30 | 2.1 | improved contrast dither for oblique orientations. Thanks to Hendrik Jungnickel at the Ammersee meeting! |
| 2007-07-25 | 2.0.5 | • added 2 new sounds: (1) run done, and (2) incorrect response. Now I prefer the purely auditory feedback to the visual one. Give it a try! • switch to Flash CS 3 with only few nasty side effects • internal changes to the PEST procedure: code “beautification” without changes in the basic logic |
| 2007-06-02 | 2.0.3 | • added a "which test on pressing ‘5’" option, changed contrast-Ø default to 30' • finally found how to abort using <esc> |
| 2007-05-23 | 202a | • There was a problem with the final contrast value in the “export to clipboard” record (thanks to Hendrik Jungnickel!) • Added sanity check for acuity formats. If all are switched off, decimal is switched on |
| 2007-04-11 | 2.0 | Contrast now employs dithering to achieve normal thresholds (currently using a 2×2 dithermatrix, increasing luminance resolution by a factor of 4). Added target cross for Contrast. Gamma adjustment via cursor keys, reference lines now use 0.5±0.3 luminance, thus avoiding the extremes, better for LCDs. |
| 2007-01-06 | 1.10 | negative optotype contrast now works again (had been lost when making the program more robust with respect to non-sensible preference values, probably back around version 1.2) |
| 2006-11-30 | 1.9 | the smallest gap size had been reduced to 0.5 pixel. Tests now showed that this does not result in reliable optotype quality, and has been reset to 1.0 |
| 2006-11-15 | 1.8a | • Extended warning when the highest possible VA is below 2.0 • Vernier result now honours the preferred decimal point character • Rewrite of the contrast routines (help from Hendrik Jungnickel gratefully acknowledged): Correct setting of contrast and readback honouring gamma correction, back luminance clamped to 50%; “results2clipboard” now works with contrast; • contrast now also allows a position shift, added by request |
| 2006-10-01 | 1.6a | • fixed decimal point internationalisation, fixed tab sequence in Preferences • “Bonus trials” now have the setting {never | every 6th trial | always}, added by request. This allows to create a separate easy training version. |
| 2006-08-09 | 1.5a | • added Vernier measurement (first attempt, feedback welcome) • fixed error that had based the 4afc psychometric function on the 8afc guessing rate • increased the default trial setting (now at 24 for 8 alternatives) The documentation does not yet reflect the Vernier addition – but it's rather obvious to operate, methinks. |
| 2006-04-28 | 1.3 | • allowed multiple combination of result formats (decimal, logMAR, Snellen fractions), • choose better ranges for rounding of decimal VA, • switched off the distance information in the result string (anyone needs this?) |
| 2005-11-22 | 1.1.3 | added "frame" (square + circular) to crowding options |
| 2005-11-21 | 1.1.2 | in "results2clipboard" trial number starts with 1, not 0; added "maxAcuity" in Prefs, framePrefs & Acuity |
| 2005-10-25 | 1.1 | added crowding flankers (on request of Bruce Evans) |
| 2005-10-10 | 1.0.9 | switched to Flash 8, some slight changes in the preferences dialog (now a combobox for decimal point) |
| 2005-08-06 |
1.0.8 |
• added “results2clipboard” (see Help>More Help for format) • added internationalisation of numerical output (the decimal point) • unfinished contrast test now defaults to off |
| 2005-04-22 | 1.0.6 | • added a "mirroring" option (requested by Laura Gibson & Ken Nakayama • added luminance linearisation calibration |
| 2004-10-07 | 1.0.5 | added facility to change eccentricity, made feedback-expansion a bit slower |
| 2004-05-28 | 1.0.1 | fixed a size error introduced in vs 1.0 (due to work on the contrast test some acuity routines were affected) |
| 2004-02-11 | 1.0 | re-implemented old direction strategy: When wrong, then reduce likelihood to present at the responded direction |
| 2004-01-08 | added contrast setting for the acuity optotype (suggestion by Lea Hyvärinen) | |
| 2002-08-24 | ported to Flash | |
| 1996-09-07 | available on the Internet | |
| 1992-11-21 | ported to Macintosh | |
| 1985 | first implementation on a Z80 with a 7220-graphics board |
In 1985 I programmed the first version, using a custom-built Z80 CP/M computer with a graphics board based on the NEC 7220 graphics chip, using serious digital differential algorithms (Newman & Sproull, 1979) just to draw the Landolt C. It became more than a curio after incorporation of the Best PEST threshold algorithm (Lieberman & Pentland, 1982) and was routinely employed in my lab to screen subjects’ acuities before experiments. The port to the Macintosh in 1992, translating from Pascal to C++, facilitated the use of anti-aliasing (Bach, 1997), which immediately made the measurements more precise (by allowing intermediate pixel values) and enabled a higher acuity limit at practical distances (a few meters). After adding gamma correction for better quantitative definition, in 1996 the first Internet version was made available. The rich feedback spurred many bug fixes and feature expansions, paving the way from a ‘hobby’ to a professional program, now validated in independent laboratories. The pressure of requests finally motivated me in 2002 to port the program to an operating system-agnostic environment, for which Macromedia’s (now Adobe’s) Flash was chosen. Consequently the program now runs in near identical fashion on the Macintosh, Linux and Windows operating systems.
• Newman WM & Sproull RF (1979) New York: McGraw-Hill, Inc.
• Lieberman HR & Pentland AP (1982) Microcomputer-based estimation of psychophysical thresholds: The Best PEST. Behaviour Research Methods & Instrumentation 14:21–25
• Bach M (1997) Anti-aliasing and dithering in the Freiburg Visual Acuity Test. Spatial Vision 11:85–89
While FrACT initially began as a “hobby project” (see History above), its widespread application made more rigorous quality control necessary.
As is well known, any interesting computer program cannot be shown to be entirely correct, and usually isn’t. Thus the ongoing validation by independent and critical users is most important for the verification of FrACT. Thank you! All pertinent comments welcome.
At this time, I am not aware of any bugs proper in FrACT. Please tell me if you find problems.