Learn R Programming

⚠️There's a newer version (3.0.5) of this package.Take me there.

Open Perimetry Interface (OPI)

The OPI package (Open Perimetry Interface) is used to both simulate and execute visual field testing algorithms (perimetry algorithms) on machines that can create visual stimuli. The simulation can be done solely with this package. Controlling machines, be they standard displays, phones, tablets, etc or commercial perimeters requires the OPI Monitor Java package. Use of commercial machines usually requires permission from the manufacturer and some other relevant third party software or key.

Why should I use it?

You should use this package for implementing, developing, testing and using visual psychophysics test procedures particularly (but not limited to) those used for clinical visual field testing (perimetry).

How do I use it?

The package supports 5 R functions that work across multiple platforms:

  • opiInitialize() For creating a connection to a machine or simulated subject.
  • opiSetup() For setting parameters like fixation markers, background colors, luminance, etc.
  • opiPresent() For presenting visual stimuli and getting a response.
  • opiClose() For closing a connection with a machine or simulated subject.
  • opiQuery() For getting information about a machine or simulated subject.

The machine or simulation that the set of functions operate upon is selected using the chooseOPI() function.

How do I get it?

The OPI package is free from CRAN and includes all code needed for simulation and use on machines such as standard displays (ie your computer monitor).

To use the

  • Octopus 900 machine, you should contact Haag-Streit to seek permission.
  • imoVifa/Tempo machine, contact CREWT (Japan)or Topcon Healthcare Inc (USA) to seek permission.
  • Compass or Maia machine, contact iCare to seek permission.
  • Kowa AP7000 machine, contact Kowa to seek permission.

Note the reason for requiring permission from commercial partners of the OPI for use on their machines is for medico-legal reasons related to the accreditation of the machines as medical devices by regulating bodies in different countries.

If you do not have contact details with the companies, email Andrew Turpin and he can put you in touch with the right person.

Other resources

OPI www page

OPI github

OPI Discourse Forum

Copy Link

Version

Install

install.packages('OPI')

Monthly Downloads

902

Version

3.0.2

License

Apache License (>= 2)

Maintainer

Andrew Turpin

Last Published

July 9th, 2024

Functions in OPI (3.0.2)

chooseOPI

chooseOPI selects an OPI machine to use.
RtDbUnits

Response times to white-on-white Goldmann Size III targets for 12 subjects in dB units
cdTodb

Convert cd/\(\mbox{m}^2\) to perimetric dB.
ZEST

ZEST
dbTocd

Convert perimetric dB to cd/\(\mbox{m}^2\)
RtSigmaUnits

Response times to white-on-white Goldmann Size III targets for 12 subjects in sigma units
MOCS

Method of Constant Stimuli (MOCS)
KTPsi

An implementation of Kontsevich and Tyler \(\Psi\) algorithm.
OPI-package

OPI: Open Perimetry Interface
QUESTP

QUEST+
kowa.presentKinetic

Present kinetic on Kowa AP7000 (internal use)
octo900.presentStatic

Present static on O900 (internal use)
FT

Full Threshold
octo900.presentKinetic

Present Kinetic stimuli on O900 (internal use)
degTopix

Convert degrees to pixels for machine 'machine'
kowa.presentStatic

Present static on Kowa AP7000 (internal use)
octo900.presentTemporal

Present Temporal stimuli on O900 (internal use)
.opi_env

Global environment for OPI to hold machine specific constants, etc.
kowa.presentTemporal

Present temporal stim on Kowa AP7000 (internal use)
fourTwo.start

4-2 Staircase
opiClose_for_SimHensonRT

opiClose_for_SimHensonRT
opiClose_for_O600

Implementation of opiClose for the O600 machine.
opiClose_for_KowaAP7000

Implementation of opiClose for the Kowa AP7000 machine.
opiClose_for_ImoVifa

Implementation of opiClose for the ImoVifa machine.
opiClose_for_Compass

Implementation of opiClose for the Compass machine.
opiInitialise_for_SimHensonRT

opiInitialise_for_SimHensonRT
opiClose_for_Octopus900

Implementation of opiClose for the Octopus900 machine.
opiClose_for_PhoneHMD

Implementation of opiClose for the PhoneHMD machine.
open_socket

Open a socket on ip and port.
opiClose

Calls opiClose_for_MACHINE as appropriate.
opiClose_for_SimGaussian

opiClose_for_SimGaussian
opiClose_for_PicoVR

Implementation of opiClose for the PicoVR machine.
opiClose_for_Display

Implementation of opiClose for the Display machine.
opiClose_for_SimHenson

opiClose_for_SimHenson
opiInitialise_for_O600

Implementation of opiInitialise for the O600 machine.
opiInitialise_for_Octopus900

Implementation of opiInitialise for the Octopus900 machine.
opiInitialise_for_Display

Implementation of opiInitialise for the Display machine.
opiInitialise_for_SimYes

opiInitialise_for_SimYes
opiInitialise_for_Compass

Implementation of opiInitialise for the ImoVifa machine.
opiKineticStimulus

For backwards compatibility. Used by Octopus900 and KowaAP7000.
opiInitialise_for_SimHenson

opiInitialise_for_SimHenson
opiInitialise

Calls opiInitialise_for_MACHINE as appropriate.
opiPresent_for_Compass

Implementation of opiPresent for the Compass machine.
opiPresent

Calls opiPresent_for_MACHINE as appropriate.
opiInitialise_for_SimGaussian

opiInitialize_for_SimGaussian
opiClose_for_SimYes

opiClose_for_SimYes
opiInitialise_for_SimNo

opiInitialise_for_SimNo
opiPresent_for_ImoVifa

Implementation of opiPresent for the ImoVifa machine.
opiPresent_for_PhoneHMD

Implementation of opiPresent for the PhoneHMD machine.
opiPresent_for_Display

Implementation of opiPresent for the Display machine.
opiClose_for_SimNo

opiClose_for_SimNo
opiPresent_for_Octopus900

Implementation of opiPresent for the Octopus090 machine.
opiPresent_for_O600

Implementation of opiPresent for the O600 machine.
opiInitialise_for_ImoVifa

Implementation of opiInitialise for the ImoVifa machine.
opiInitialise_for_KowaAP7000

Implementation of opiInitialise for the Octopus900 machine.
opiPresent_for_KowaAP7000

Implementation of opiPresent for the KowaAP7000 machine.
opiQueryDevice_for_O600

Implementation of opiQueryDevice for the O600 machine.
opiQueryDevice_for_Compass

Implementation of opiQueryDevice for the ImoVifa machine.
opiQueryDevice_for_Octopus900

Implementation of opiQueryDevice for the Octopus900 machine.
opiQueryDevice_for_KowaAP7000

Implementation of opiQueryDevice for the Kowa AP7000 machine.
opiQueryDevice

Calls opiQueryDevice_for_MACHINE as appropriate.
opiInitialise_for_PicoVR

Implementation of opiInitialise for the PicoVR machine.
opiQueryDevice_for_Display

Implementation of opiQueryDevice for the Display machine.
opiPresent_for_PicoVR

Implementation of opiPresent for the PicoVR machine.
opiInitialise_for_PhoneHMD

Implementation of opiInitialise for the PhoneHMD machine.
opiPresent_for_SimGaussian

opiPresent_for_SimGaussian
opiQueryDevice_for_PhoneHMD

Implementation of opiQueryDevice for the PhoneHMD machine.
opiPresent_for_SimHenson

opiPresent_for_SimHenson
opiSetup_for_ImoVifa

Implementation of opiSetup for the ImoVifa machine.
opiQueryDevice_for_PicoVR

Implementation of opiQueryDevice for the PicoVR machine.
opiQueryDevice_for_ImoVifa

Implementation of opiQueryDevice for the ImoVifa machine.
opiQueryDevice_for_SimYes

opiQueryDevice_for_SimYes
opiQueryDevice_for_SimGaussian

opiQueryDevice_for_SimGaussian
opiPresent_for_SimHensonRT

opiPresent_for_SimHensonRT
opiQueryDevice_for_SimNo

opiQueryDevice_for_SimNo
opiSetup_for_SimGaussian

opiSetup_for_SimGaussian
opiPresent_for_SimNo

opiPresent_for_SimNo
opiQueryDevice_for_SimHensonRT

opiQueryDevice_for_SimHensonRT
opiPresent_for_SimYes

opiPresent_for_SimYes
opiSetup_for_SimHenson

opiSetup_for_SimHenson
opiQueryDevice_for_SimHenson

opiQueryDevice_for_SimHenson
opiSetup_for_Compass

Implementation of opiSetup for the Compass machine.
opiSetup_for_KowaAP7000

opiSetBackground
opiSetup_for_Display

Implementation of opiSetup for the Display machine.
pixTodeg

Convert pixels to degrees for machine 'machine'
opiTemporalStimulus

For backwards compatibility. Used by Octopus900 and KowaAP7000.
opiSetBackground

Deprecated. Use opiSetup().
opiSetup_for_SimYes

opiSetup_for_SimYes
opiStaticStimulus

For backwards compatibility. Used by Octopus900 and KowaAP7000.
opiSetup_for_O600

opiSetup for the O600 machine.
opiSetup_for_SimHensonRT

opiSetup_for_SimHensonRT
opiSetup_for_PhoneHMD

Implementation of opiSetup for the PhoneHMD machine.
opiSetup

Calls opiSetup_for_MACHINE as appropriate.
opiSetup_for_SimNo

opiSetup_for_SimNo
opiSetup_for_Octopus900

Implementation of opiSetup for the Octopus900 machine.
opiSetup_for_PicoVR

Implementation of opiSetup for the PicoVR machine.