The Analysis of Dark Adaptation Data

The recovery of visual sensitivity in a dark environment is known as dark adaptation. In a clinical or research setting the recovery is typically measured after a dazzling flash of light and can be described by the Mahroo, Lamb and Pugh (MLP) model of dark adaptation. The functions in this package take dark adaptation data and use nonlinear regression to find the parameters of the model that 'best' describe the data. They do this by firstly, generating rapid initial objective estimates of data adaptation parameters, then a multi-start algorithm is used to reduce the possibility of a local minimum. There is also a bootstrap method to calculate parameter confidence intervals. The functions rely upon a 'dark' list or object. This object is created as the first step in the workflow and parts of the object are updated as it is processed.

Version 0.9.6

To Do

Test scripts

Build Status

Build Status



This package is being developed at the University of Manchester and is used to analyse data collected in dark adaptation measurements and experiments. The data are collected in the Optometry department of the University of Manchester in the Faculty of Life Sciences. The principal investigator is Dr Ian J Murray, other members of the team include Drs Jeremiah Kelly, Humza Tahir and Laura Patryas.

Data are collected using custom built laboratory devices and computer controlled CRT units. The results are stored usually as text or spreadsheet files. The first part of the workflow is to create a script that retrieves the data and presents it within R in a format that is usable.

The suite of scripts uses a list referred to as a dark object, an initial work through of the data input is shown below. A first GetData... script is shown in GetData.R. This script can be used as a template to create a script specific to your own work.


This work presents independent research funded by the National Institute for Health Research Invention for Innovation (NIHR i4i) Programme (ref: II-LB-0712-20001). The views expressed are those of the author(s) and not necessarily those of the NHS, the NIHR or the Department of Health.


The author of the package can be contacted through jeremiah.kelly at or emkayoh at

Getting started

The scripts rely on the generation of a dark object, obj. This is just a list with at least two elements; obj$time and obj$thrs.

Here is a way to do that using copy and paste from a spreadsheet.

Select the time data, then in R type;


obj$time<- scan()

then paste and press return.

obj<- NULL
obj$time<- scan()
1: 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20
Read 21 items

repeat for the thresholds

obj$thrs<- scan()
1: 0.1453469 -0.6968675 -1.0072369 -1.0166411 -0.6266554 -0.9923025 -1.1308808 -1.3437734 -1.5006185 -1.5132403 -1.9454982 -2.1601161 -2.3190977 -2.9759416 -2.6118030 -2.6488100 -2.4796138 -3.0221779 -2.8277825 -2.9462043 -3.1657820
Read 21 items

Finally set the class to dark


The output should resemble this:

 [1]  0.1453469 -0.6968675 -1.0072369 -1.0166411 -0.6266554 -0.9923025 -1.1308808
 [8] -1.3437734 -1.5006185 -1.5132403 -1.9454982 -2.1601161 -2.3190977 -2.9759416
[15] -2.6118030 -2.6488100 -2.4796138 -3.0221779 -2.8277825 -2.9462043 -3.1657820
 [1]  0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20
[1] "dark"

email or raise an issue for further help.


Reference manual

It appears you don't have a PDF plugin for this browser. You can click here to download the reference manual.


0.9.8 by Jeremiah MF Kelly, 5 years ago,

Report a bug at

Browse source code at

Authors: Jeremiah MF Kelly

Documentation:   PDF Manual  

GPL-3 license

Imports stats, grDevices, graphics, utils

Suggests knitr, rmarkdown, testthat

See at CRAN