Initialize OPI.

Share:

Description

Generic function for initialization of the chosen OPI implementation that is set with chooseOpi().

Usage

1
2

Arguments

...

Implementation specific parameters. See details.

Details

SimHenson

opiInitialize(type="C", A=NA, B=NA, cap=6, display=NULL, maxStim=10000/pi)

If the chosen OPI implementation is SimHenson, then type can be one of: "N", for normal patients; "G", for POAG patients; and "C", for a combination. See Table 1 in Henson et al (2000). If type is "X" then A and B should be specified and are used in place of one of the three A/B combinations as in Henson et al (2000). cap is the maximum standard deviation value that the simulator will use for the slope/spread of the psychometric function.

If display is a vector of four numbers c(xlow, xhi, ylow, yhi), then a plot area is created of dimension xlim=range(xlow, xhi) and ylim=range(ylow, yhi) and each call to opiPresent will display a point on the area. The color of the plot area can be set with opiSetBackground, and the color of the displayed point is determined by the stimulus passed to opiPresent.

maxStim is the maximum stimuls value in cd/m^2. This is used in converting cd/m^2 to dB values, and vice versa.

SimHensonRT

opiInitialize(type="C", A=NA, B=NA, cap=6, display=NULL, maxStim=10000/pi, rtData, rtFP=1:1600)

If the chosen OPI implementation is SimHensonRT, then the first six parameters are as in SimHenson, and rtData is a data frame with at least 2 columns: "Rt", reponse time; and "Dist", signifying that distance between assumed threshold and stimulus value in your units.

This package contains RtSigmaUnits or RtDbUnits that can be loaded with the commands data(RtSigmaUnits) or data(RtDbUnits), and are suitable to pass as values for rtData.

rtFp gives the vector of values in milliseconds from which a response time for a false positive response is randomly sampled.

SimGaussian

opiInitialize(sd, display=NULL, maxStim=10000/pi)

If the chosen OPI implementation is SimGaussian, then sd is the standard deviation value that the simulator will use for the slope/spread of the psychometric function.

display and maxStim is as for SimHenson.

Octopus900

opiInitialize(eyeSuiteSettingsLocation, eye, gazeFeed=0, bigWheel=FALSE,pres_buzzer=0, resp_buzzer=0, zero_dB_is_10000_asb=TRUE)

If the chosen OPI implementation is Octopus900, then you must specify a directory and the eye to be tested.

eyeSuiteSettingsLocation is the folder name containing the EyeSuite setting files, and should include the trailing slash.

eye must be either "left" or "right".

gazeFeed is 0 for no gaze tracking infromation. If gazeFeed is 1, then a single frame is returned as part of the value from opiPresent which is the most recent frame captured. If gazeFeed is 2, then a all frames containing the asterix are returned as part of the value from opiPresent, which are the frames captured while a static stimulus is displayed. If gazeFeed is greater than zero, a Java driven window appears containing the live feed from the Octopus 900 gaze camera.

bigWheel is FALSE for a standard Octopus 900 machine. Some research machines are fitted with an alternate aperture wheel that has 24 sizes, which are accessed with bigWheel is TRUE. The mapping from size to 'hole on wheel' is hard coded; see code for details.

If pres_buzzer is greater than zero, a buzzer will sound with each stimuli presented. If resp_buzzer is greater than zero, a buzzer will sound with each button press (resposne). The volume can be one of 0 (no buzzer), 1, 2, or 3 (max volume). If both buzzers are more than zero, the maximum of the two will be used as the volume.

If zero_dB_is_10000_asb is TRUE then 0 dB is taken as 10000 apostilbs, otherwise 0 dB is taken as 4000 apostilbs.

Octopus600

opiInitialize(ipAddress, eye, pupilTracking=FALSE, pulsar=FALSE, eyeControl=0)

If the chosen OPI implementation is Octopus600, then you must specify the IP address of the Octopus 600 and the eye to test.

ipAddress is the IP address of the Octopus 600 as a string.

eye must be either "left" or "right".

pupilTracking is TRUE to turn on IR illumination and set pupil black level (which happens at the first stimulus presentation).

pulsar is TRUE for pulsar stimulus, FALSE for size III white-on-white.

eyeControl

  • 0 is off

  • 1 is eye blink

  • 2 is eye blink, forehead rest, fixation control

  • 3 is eye blink, forehead rest, fixation control, fast eye movements

KowaAP7000

opiInitialize(ip, port)

If the chosen OPI implementation is KowaAP7000, then you must specify the IP address and port of the AP-7000 server.

ipAddress is the IP address of the AP-7000 server as a string.

port is the TCP/IP port of the AP-7000 server as a number.

imo

opiInitialize(ip, port)

If the chosen OPI implementation is imo, then you must specify the IP address and port of the imo server.

ipAddress is the IP address of the imo server as a string.

port is the TCP/IP port of the imo server as a number.

Value

Returns NULL if initialization succeeded, otherwise an implementation dependant error.

Octopus900

Returns NULL if successful, 1 if Octopus900 is already initialised by a previous call to opiInitialize, and 2 if some error occured that prevented ininitialisation.

The default background and stimulus setup is to white-on-white perimetry. Use opiSetBackground to change the background and stimulus colors.

Octopus600

Returns NULL if successful, or an Octopus 600 error code

The default background and stimulus setup is to white-on-white perimetry.

Kowa AP-7000

Always returns NULL.

imo

Always returns NULL. Will stop if there is an error.

Author(s)

Andrew Tuprin <aturpin@unimelb.edu.au>

References

Please cite: A. Turpin, P.H. Artes and A.M. McKendrick "The Open Perimetry Interface: An enabling tool for clinical visual psychophysics", Journal of Vision 12(11) 2012.

http://perimetry.org/OPI

David B. Henson, Shaila Chaudry, Paul H. Artes, E. Brian Faragher, and Alec Ansons. Response Variability in the Visual Field: Comparison of Optic Neuritis, Glaucoma, Ocular Hypertension, and Normal Eyes. Investigative Ophthalmology & Visual Science, February 2000, Vol. 41(2).

See Also

chooseOpi, opiSetBackground, opiClose, opiPresent

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
    # Set up a simple simulation for white-on-white perimetry
chooseOpi("SimHenson")
if (!is.null(opiInitialize(type="C", cap=6)))
    stop("opiInitialize failed")

    # Set up a simple simulation for white-on-white perimetry
    # and display the stimuli in a plot region
chooseOpi("SimHenson")
if (!is.null(opiInitialize(type="C", cap=6, display=c(-30,30,-30,30))))
    stop("opiInitialize failed")

    # Set up a simple simulation for white-on-white perimetry
    # and display the stimuli in a plot region and simulate response times
chooseOpi("SimHensonRT")
data(RtSigmaUnits)
oi <- opiInitialize(type="C", cap=6, 
        display=c(-30,30,-30,30), rtData=RtSigmaUnits, rtFP=1:100)
if (!is.null(oi))
    stop("opiInitialize failed")

    # Set up a simulation using a psychometric function that is
    # a cumulative gaussian of standard deviation 2
chooseOpi("SimGaussian")
if (!is.null(opiInitialize(sd=2)))
    stop("opiInitialize failed")

## Not run: 
    # Set up the Octopus 900
chooseOpi("Octopus900")
if (!is.null(opiInitialize(
        eyeSuiteJarLocation="C:/Program Files (x86)/Haag-Streit/EyeSuite/", 
        eyeSuiteSettingsLocation="C:/ProgramData/Haag-Streit/EyeSuite/",
        eye="left")))
    stop("opiInitialize failed")

## End(Not run)

## Not run: 
    # Set up the Kowa AP-7000
chooseOpi("KowaAP7000")
opiInitialize(ip="192.168.1.7", port=44965)

## End(Not run)

## Not run: 
    # Set up the imo
chooseOpi("imo")
opiInitialize(ip="192.168.1.7", port=44965)

## End(Not run)