Skip to content

In contrast to the VOL and XML exports the E2E data may contain several OCT volumes and other data. The format might even allow for data from multiple patients in a single E2E file. Everything is stored in a general container structure that is described in the File Structure section.

File Structure

The first bytes in an E2E file contain a version structure followed by a header structure. The header gives you access to the rest of the file by identifying the position of the last chunk of data. Each chunk has exactly 512 elements which we call folders.

Offset Name Size Parses to Description
0 version 36 Version
36 header 52 Header The prev field in the main header refers to the start position of the last chunk
88 chunks variable List[Chunk ] The number and size of the chunks depends on the data

Chunk

Every chunk has a header similar to the file header. A chunk then holds the headers of all contained folders sequentially, followed by data containers, that are referenced by the folder headers. A chunk can contain folders with data of different patients, studies, series, slices and types. Each folder contains data for a single (patient, study, series, slice, type) combination which is given in the folder header as well as the data container header. For the last chunk to have 512 folders, empty folders of type=0 are appended.

Offset Name Size Parses to Description
0 chunk_header 52 Header Each chunk refers to the start position of the previous chunk (prev field)
52 folders variable List[FolderHeader ] In the data we have seen each chunk has 512 folders with headers of size 44
variable jump variable int

Data Container

Offset Name Size Parses to Description
0 header 60 ContainerHeader
60 item variable Any There are many kinds of DataItems indicated by different type IDs in the folder/container header

Data Items

While the most important data, images and annotations were identified, there are still many data items that are not understood. We choose to sort the found data items by the level of information they are likely to contain. Therefore we use the IDs provided in the ContainerHeader (patient ID, study ID, series ID and slice ID). We assume that as in our test data these IDs follow some rules in them beeing hierarchical. Having a study is only meaningful if there is a patient and having a series in a study requires a study. Finally a slice requires a series to be contained in.

  1. Hence, if a slice ID is given we assume that the data is slice specific.
  2. If this is not the case, but a series ID is given, the data is series specific.
  3. If this is not the case, but a study ID is given, the data is study specific.
  4. If this is not the case, but a patient ID is given, the data is patient specific.
  5. If no ID is given, the data is general or a filler.

In the following sections we describe the data items we found in each level of the described hierarchy. If you have any further information, please open an issue on GitHub and let us know.

Slice Data

Type ID Content Size Description
2
3 Type 3. 96 bytes
5 Type 5. 59 bytes
39
40
10004 B-scan Metadata Metadata for a single B-scan. 428 bytes
10012 Type 10012. variable
10013 Type 10013. variable
10019 Layer Annotation Stores one layer for one Bscan. variable
10020
10032
1073741824 Image data Stores various kinds of images. variable
1073751824
1073751825
1073751826

Series Data

Type ID Content Size Description
2
3 Type 3. 96 bytes
11 Type 11. 27 bytes
54
59 Type 59. 27 bytes
61
62
1000
1001
1003
1008
9005 Examined structure Name of the examined structure. 264 bytes
9006 Scan pattern Bscan pattern used for the aquisition. 520 bytes
9007 Enface Modality Modality of the enface (eg IR) 520 bytes
9008 OCT Modality Modality of the OCT (eg OCT) 520 bytes
10005
10009
10010 Type 10010. variable
10011
10013 Type 10013. variable
10025 Localizer Metadata. 100 bytes
1073741824 Image data Stores various kinds of images. variable
1073751824
1073751825
1073751826

Study Data

Type ID Content Size Description
7 Measurements Global measurements of the eye. 68 bytes
10
13
30
53
58
1000
9000 Studyname Name of the study/visit. 264 bytes
9001 Device Name of the used device. 776 bytes

Patient Data

Type ID Content Size Description
9 Patient data Personal data of the patient. 131 bytes
17 Diagnose data. variable
29
31
52
9010

General Data

Type ID Content Size Description
0
9011

Further observations

  • Some type IDs for example the laterality type might be repeated. In our test data there is a case where the only difference between the folder headers of this laterality data is the value of the unknown2 field which takes the values 0, 1 and 65535.