The cornea is the external (outermost) part of the eye, and it is responsible for most of the eye’s refractive power. Given its importance in vision, its analysis is especially important in clinical ophthalmology, since it can be affected by several diseases (e.g., keratoconus). Besides, refractive surgery to correct vision defects acts on the cornea, changing its curvature. Thus, the correct analysis and diagnosis of the cornea are crucial for practitioners (Fan et al. (2018)).
Corneal topography (Rowsey, Reynolds, and Brown (1981), Piñero (2015), Fan et al. (2018)) refers to the measurement of the corneal surface shape using an automated device, which is called a corneal topographer. Most corneal topographers used in clinical practice rely on the Placido disk technology (either alone or in combination with others, such as the Scheimpflug camera) (Piñero (2015), Samapunphong and Azar (1998)). In a Placido disk topographer, an illuminated pattern of concentric rings (which is the actual Placido disk) is projected into the corneal surface, and its reflection on the anterior surface of the cornea is captured by a camera situated at the center of the system. The picture is then digitized along a certain number of radii at equally spaced angles (Samapunphong and Azar (1998), Espinosa et al. (2013)).
There are two basic magnitudes: the number of rings in the actual Placido disk \(N_R\), which is projected into the eye, and the number of angles \(N_A\) (or number of points per rings) in the digitization process. These may vary from a device to another. The plain coordinates of the points (x and y) are the primary information given by the topographers. Afterward, they usually post-process the data to obtain a third coordinate (z), yielding altimetric (elevation) or curvature data, and provide color maps and other easy-to-interpret indices to the practitioner. In some topographers, the raw measurements can be exported as a structured text file.
For a deeper insight about these and other related topics (corneal topography, Placido disk technology, keratoconus, …), we refer the reader to the references at the bottom, or to the websites by University of Iowa Health Care and American Academy of Ophthalmology.
Next, we give a (non-exhaustive) list of corneal topographers that use the Placido disk technology. Some of these devices are also called aberrometers or tomographers (as they also include other technologies than the Placido-disk), or even keratometers or corneal analyzers. This list has been elaborated with publicly available information or reported in scientific papers. Some manufacturers are: CSO (Firenze, Italy), Gaush (Beijing, China), Medmont (Victoria, Australia), Nidek (Aichi, Japan), Optikon (Roma, Italy), Topcon (Tokyo, Japan), Zeiss (Oberkochen, Germany), and Ziemer (Port, Switzerland).
Disclaimer: The authors do not have any commercial nor financial interest in the manufacturers reported here or in any other corneal topography companies. Any reliable information about additional manufacturers or topographers will be welcome and incorporated into this documentation.
Information about the number of rings and the total number of points measured is also included, when available. We also calculate or estimate the number of points per ring, as the ratio between the two previous quantities, when this data was not reported directly. Notice that the technical features, user operating manual, or other detailed information are generally not public for a particular topographer (sometimes, not even what kind of technology they use).
Manufacturer | Device | Placido disk rings | Measured points1 | Points per ring2 |
---|---|---|---|---|
CSO | EyeTop2005 | 24 | 6144 | 256 |
CSO | Antares | 24 | 6144 | 256 |
CSO | MODI’2 | 24 | 6144 | 256 |
CSO | Osiris-T | 22 | 5632 | 256 |
CSO | Sirius | 22 | >=21632 | ~1000 |
CSO | Sirius+ | 22 | >=42032 | ~2000 |
CSO | MS-39 | 22 | 31232 | ~1420 |
Gaush | TOKA CT-6 | 29 | 10440 | 360 |
Medmont | Medmont E300 | 32 | 9600 | 300 |
Nidek | OPD-Scan III | 33 | 11880 | 360 |
Optikon | Keratron Nova | 28 | 7168 | 256 |
Topcon | KR-800PA | 10 | 3960 | 396 |
Topcon | KR-1W | 19 | 6840 | 360 |
Topcon | CA-800 | 24 | 6200 | ~260 |
Topcon | Aladdin | 24 | 6200 | ~260 |
Zeiss | [Atlas 9000] | 22 | ? | ? |
Ziemer | Galilei G4 | 20 | ? (up to 100000) | ? (~5000) |
Ziemer | Galilei G6 | 20 | ? (up to 100000) | ? (~5000) |
It is important to notice that irregularity indices in rPACI require a raw measurement, i.e., the data points obtained before any internal processing, interpolation, or resampling. Since most technical documentation is not public, we cannot assure if all these devices allow exporting the raw measurements. Please consult the user operating manual to determine it, or ask the manufacturer’s technical support.
In this section, we give some general hints about data exportation from a corneal topographer. Due to the lack of public documentation on the topic, the variety of topographers and manufacturers, and their use of proprietary software with copyright restrictions, giving more detailed information about the process of data exportation becomes unfeasible. If necessary, please consult the topographer’s user operating manual, or ask the manufacturer’s technical support.
Most commercial topographers use proprietary, black-box software, specially designed to facilitate the practitioners’ work. They normally use a GUI (Graphical User Interface) to interact with the user, or more specifically, a WIMP system (from Windows, Icons, Menus, Pointer). Among the options available in the different topographer’s menus, some commercial devices offer the possibility of exporting data, previously obtained from a corneal measurement. These options may appear in the menus related to database management, data export/import, save or save as, I/O, backup, external copy, or other similar terms. If necessary, please consult the topographer’s user operating manual, or ask the manufacturer’s technical support.
In the case of CSO topographers (this may apply to other manufacturers as well), during the raw data exportation process, the user is asked whether to store altimetry/elevations, axial curvatures, or diopters (z coordinate). For its use in rPACI, the chosen magnitude is not important, since the information required by the package are the flat positions of the measured points (2D: x and y), and the third coordinate (z) is not used (Ramos-López et al. (2011), Ramos-López et al. (2013)).
If you have data from another Placido-based corneal topographer that do not fit the formats explained below, you can try to convert the data to fit any of them, or ask us to make a new specific reading function for them (to do that, please open an issue through the rPACI’s GitHub repository).
The rPACI package is able to read corneal topography files in two different formats, by now. It will possibly be expanded in the future allowing formats used by other manufacturers. The first file format is basically the one employed by CSO topographers, but with some more flexibility. The second file format has the structure used internally by rPACI. It has been developed to manage directly the datasets handled by the package, allowing to save and read data easily. These two formats are described in the next subsections.
Notice that rPACI also includes the general function readFile
(which is the one recommended to use by default), which can deal with both file formats. This function internally determines the format of the specified file, and then it applies either readCSO
or readrPACI
if possible, or else it throws an error (if none can be applied, when the file format does not fit any of these two formats). All this process is transparent to the user, so that using readFile
with one file type or another is done in the same way, and it produces the same results.
Additional details about using the rPACI’s reading functions can be found in Workflow of the rPACI package.
The R package rPACI includes the function readCSO
which is able to read a raw Placido disk corneal topography from a file that has been exported by certain corneal topographers. It has been specially designed for the file format exported from topographers manufactured by CSO (Firenze, Italy): EyeTop2005, Sirius, Antares, or Osiris-T, among others.
Nevertheless, the reading function readCSO
has been designed to be more flexible, allowing to specify different parameters: the amounts of rings available, points per ring, and rings to use, whether to use or not only complete rings, and the value encoding NAs in the file. In addition, this function automatically processes the file and identifies the size and the header, without assuming a fixed structure or having to specify its size as a parameter.
To use rPACI’s readCSO
, the raw measurement file exported by a corneal topographer should have the following structure:
readCSO
, is able to detect the header lines (those that do not contain only real numbers) and to skip them.More details about using readCSO
and the rest of the rPACI package can be found in Workflow of the rPACI package.
The next table shows the data file format required by rPACI’s readCSO
, each row represents a line, and the file should be a plain text document (with any extension, not necessarily ‘.txt’). In the file, \(\rho\) values will be positive real numbers, and \(z\) values will be real numbers.
Data file format |
---|
Header line 1 |
Header line 2 |
… |
Header line n |
\(\rho_1\) |
\(\rho_2\) |
… |
\(\rho_{N_A}\) |
\(\rho_{(N_A+1)}\) |
\(\rho_{(N_A+2)}\) |
… |
\(\rho_{(N_R \times N_A)}\) |
\(z_1\) |
\(z_2\) |
… |
\(z_{N_A}\) |
\(z_{(N_A+1)}\) |
\(z_{(N_A+2)}\) |
… |
\(z_{(N_R \times N_A)}\) |
In the best scenario (which is not very common in the clinical practice), the \(N_R\) rings are fully available, with \(N_A\) points each, giving a total of \(N_R \times N_A\) data points. However, many points are often missing, especially those corresponding to outermost rings (as they could not be digitized properly). Missing data are generally codified in the file with a specific number (such as “-1” or “-1000”) in the data file. Thus, these values do not correspond to real measurements and should be removed. These values are substituted by NA
when reading the file using rPACI’s readCSO
.
The indices available in the rPACI package make use only of the \(\rho\) and \(\theta\) coordinates, discarding the post-processed data in \(z\). Also, incomplete rings are not taken into account for the calculation of the indices by default. They can, but they are usually highly affected by noise and measurement errors, and their use could distort the results.
In addition, the R package rPACI includes also the functions readrPACI
which is able to read a file structured in the same way as the datasets used in the package. A file of this type is built using writerPACI
over an rPACI dataset, which may have been obtained reading data from a file in other formats (e.g. using readCSO
), or by simulation (with simulateData
).
Assuming there are \(N\) full rings in the dataset and \(N_A\) points in each ring, the file structure would be that of the table below. If the file was saved from a dataset generated using simulateData
, the header contains the simulation parameters, that are recovered as attributes of the data.frame
when reading the file again.
Data file format | ||
---|---|---|
Header line 1 | ||
Header line 2 | ||
… | ||
Header line n | ||
“x” | “y” | “ring index” |
\(x_1\) | \(y_1\) | \(1\) |
\(x_2\) | \(y_2\) | \(1\) |
\(x_3\) | \(y_3\) | \(1\) |
… | … | … |
\(x_{N_A}\) | \(y_{N_A}\) | \(1\) |
\(x_{(N_A+1)}\) | \(y_{(N_A+1)}\) | \(2\) |
\(x_{(N_A+2)}\) | \(y_{(N_A+2)}\) | \(2\) |
… | … | … |
\(x_{(2 N_A)}\) | \(y_{(2 N_A)}\) | \(2\) |
… | … | … |
\(x_{((N-1) \times N_A + 1)}\) | \(y_{((N-1) \times N_A + 1)}\) | \(N\) |
… | … | … |
\(x_{(N \times N_A)}\) | \(y_{(N \times N_A)}\) | \(N\) |