va {eye} | R Documentation |
Visual acuity notation conversion
Description
Cleans and converts visual acuity notations (classes) between Snellen (decimal, meter and feet), ETDRS, and logMAR.
Usage
va(x, from = NULL, to = NULL, type = "ft", smallstep = FALSE, noplus = FALSE)
Arguments
x |
Vector with visual acuity entries. Must be atomic. Snellen fractions need to be entered with "/" |
from |
will force to evaluate from which notation to convert - Must be "etdrs", "logmar", "snellen" or "snellendec". Ignored if the value should not be plausible. |
to |
To which class to convert. "etdrs", "logmar" or "snellen" - any case allowed. If NULL (default), will simply "clean up" VA entries. This may then result in a vector of "mixed" VA notations. |
type |
To which Snellen notation to convert: "m", "dec" or "ft" |
smallstep |
how +/- entries are evaluated. FALSE: increase/decrease Snellen fractions by lines. TRUE: plus/minus entries equivalent to 0.02 logmar |
noplus |
ignoring plus/minus entries and just returning the snellen fraction. This overrides the smallstep argument. |
Value
vector of va
class. See also "VA classes"
VA conversion
-
logMAR to ETDRS: logMAR rounded to the first digit and converted with the visual acuity chart (see section VA chart)
-
Snellen to logMAR: logMAR = -1 * log10(snellen_frac)
-
Snellen to ETDRS: ETDRS = 85 + 50 * log10(snellen_frac) doi: 10.1097/iae.0b013e3181d87e04
-
ETDRS to logMAR: logMAR = -0.02 * etdrs + 1.7 Beck et al. doi: 10.1016/s0002-9394(02)01825-1
-
Hand movements and counting fingers are converted following Schulze-Bonsel et al. - https://doi.org/10.1167/iovs.05-0981
-
(No) light perception are converted following the suggestions by Michael Bach
Qualitative visual acuity entries
In order to calculate with qualitative entries counting fingers, hand movement and (no) perception of light, use logMAR ! Qualitative visual acuity lower than counting fingers is assigned 0 ETDRS letter, in order to keep it as a measurement (not: NA). It is very difficult to justify a "negative" letter score in a test which only has a specific range (0-100).
-
To Snellen: Although there seems to be no good statistical reason to convert back to Snellen, it is a very natural thing to eye specialists to think in Snellen. A conversion to snellen gives a good gauge of how the visual acuity for the patients are. However, back-conversion should not be considered an exact science and any attempt to use formulas will result in very weird Snellen values that have no correspondence to common charts. Therefore, Snellen matching the nearest ETDRS and logMAR value in the VA chart are used.
VA chart
You can find with eye:::va_chart. This chart and VA conversion formulas are based on charts in Holladay et al.doi: 10.1016/j.jcrs.2004.01.014, Beck et al. doi: 10.1016/s0002-9394(02)01825-1Beck et al., and Gregori et al.doi: 10.1097/iae.0b013e3181d87e04. The etdrs values for NLP and PL are deliberately set at those values because they are unlikely to happen by chance as a wrong entry (and as integers), and it has internal reasons that make conversion easier.
Accepted VA formats / Plausibility checks
Snellen fractions (meter/ feet) need to be entered as fraction with "/". Any fractions allowed. You can get creative with your snellens. see "Examples"
ETDRS must be integer-equivalent between 0 and 100 (integer equivalent means, it can also be a character vector)
logMAR must be -0.3 <= x <= 3.0
Snellen decimal must be 0 < x <= 2
Qualitative must be either of PL, LP, NLP, NPL, HM, CF (any case allowed)
Plausibility checks are performed for the automatically or manually defined notation.
Any element which is implausible/ not recognized will be converted to NA
Entries with mixed VA notations
Use va_mixed instead.
Snellen "+/-" entries
By default, plus/minus entries are evaluated as intended by the test design: Snellen fractions increase/decrease only by lines.
- if entry -2 to +2 : take same Snellen value - if < -2 : take Snellen value one line below - if > +2 : take Snellen value one line above
If smallstep = TRUE, each snellen optotype will be considered equivalent to 0.02 logmar (assuming 5 letters in a row in a chart)
VA cleaning
For more details see clean_va()
-
NA
is assigned to strings such as "." or "", "n/a" or " " notation for qualitative entries is simplified.
VA classes
convertVA returns a vector of three classes:
-
va
One of snellen, snellendec, logmar, etdrs or quali.
Either of
character
(for Snellen, snellendec, and qualitative),numeric
(for logMAR), orinteger
(for ETDRS).
See Also
Other Ophthalmic functions:
va_mixed()
Other VA converter:
VAwrapper
,
plausibility_methods
,
snellen_steps
,
va_methods
,
va_mixed()
,
which_va()
Other VA cleaner:
clean_va()
Examples
## will automatically detect VA class and convert to logMAR by default
## ETDRS letters
x <- c(23, 56, 74, 58)
va(x)
## ... or convert to snellen
va(x, to = "snellen")
## snellen, mixed with categories. Also dealing with those "plus/minus" entries
va(c("NLP", "NPL", "PL", "LP", "HM", "CF", "6/60", "20/200", "6/9",
"20/40", "20/40+3", "20/50-2"))
## A mix of notations is also possible
x <- c("NLP", "0.8", "34", "3/60", "2/200", "20/40+3", "20/50-2")
va(x)
## Any fraction is possible, and empty values
x <- c("CF", "3/60", "2/200", "", "20/40+3", ".", " ")
va(x)
## but this not any fraction when converting from one class to the other
x <- c("3/60", "2/200", "6/60", "20/200", "6/9")
va(x, to="snellen", type = "m")