eyepy

A python package to read, analyse and visualize OCT and fundus data from various sources.

https://github.com/medvisbonn/eyepy

Science Score: 54.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
    Links to: zenodo.org
  • Committers with academic emails
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (14.1%) to scientific vocabulary

Keywords

amd drusen e2e enface etdrs filereader fundus heidelberg heyex localizer nir oct python reader retouch spectralis visualization vol

Keywords from Contributors

spacy-extension climate-science dimensionality-reduction eof-analysis pattern-recognition pca electronic-healthcare-data irregular-time-series covariate-shift data-distributions
Last synced: 4 months ago · JSON representation ·

Repository

A python package to read, analyse and visualize OCT and fundus data from various sources.

Basic Info
Statistics
  • Stars: 71
  • Watchers: 6
  • Forks: 12
  • Open Issues: 8
  • Releases: 39
Topics
amd drusen e2e enface etdrs filereader fundus heidelberg heyex localizer nir oct python reader retouch spectralis visualization vol
Created over 5 years ago · Last pushed 6 months ago
Metadata Files
Readme Changelog Contributing License Citation

README.md

eyepy

A powerful Python package for importing, analyzing, and visualizing retinal imaging data, including OCT and OCT Angiography.

header_gif

Documentation PyPI version DOI

eyepy provides a unified and user-friendly interface for working with retinal imaging data. With support for a wide range of file formats, it enables researchers and clinicians to import, process, and visualize OCT volumes and angiography data with ease. The core EyeVolume object offers intuitive methods for plotting fundus images, B-scans, and quantitative analyses such as drusen and retinal layer thickness. Comprehensive documentation and example workflows are available to help you get started quickly.

Features

  • Import Structural Data (HEYEX-E2E, HEYEX-VOL, HEYEX-XML, Topcon-FDA, B-Scan collections, RETOUCH Challenge, AMD Dataset from Duke University)
  • Import Angiographic OCT Data (HEYEX-VOL)
  • Analyze OCT volumes (compute and quantify drusen)
  • Visualize OCT volumes with annotations and quantifications
  • Compute and visualize retinal layer thickness
  • Compute and visualize OCTA enface projections.
  • Save and load EyeVolume objects

Getting Started

Installation

Attention: If you want to use a version prior to 0.12.0 you have to install from the eyepie name instead. This is because we used eyepie as a package name on PyPI until the previous owner of the eyepy name on PyPI was so kind to transfer it to us.

To install the latest version of eyepy run pip install -U eyepy. (It is eyepie for versions < 0.12.0)

Getting Started

When you don't have a supported OCT volume at hand you can check out our sample datasets to get familiar with eyepy.

python from eyepy.data import load struc_ev = load("drusen_patient") struc_ev = load("healthy_OD") angio_ev = load("healthy_OD_Angio")

If you have data at hand use one of eyepy's import functions.

```python

Import HEYEX E2E export

ev = ep.importheyexe2e("path/to/file.e2e")

Import HEYEX XML export

ev = ep.importheyexxml("path/to/folder")

Import HEYEX VOL export

ev = ep.importheyexvol("path/to/file.vol")

Import Topcon FDA export

ev = ep.importtopconfda("path/to/file.fda")

Import volume from Duke public dataset

ev = ep.importdukemat("path/to/file.mat")

Import volume from RETOUCH challenge

ev = ep.importretouch("path/to/volumefolder")

Import HEYEX OCTA VOL export

evangio = ep.importheyexangiovol("path/to/volume_folder") ```

Spectralis OCTA (OCT Angiography) Support

eyepy is capable of reading and visualizing OCT Angiography (OCTA) data from Heidelberg Spectralis devices. You can explore and analyze both structural and angiography volumes using the same unified interface.

Example: Load and Visualize Spectralis OCTA Sample Data

The following example demonstrates how to load OCTA sample data, and plot the enface projections.

```python import eyepy as ep import matplotlib.pyplot as plt

Load sample data

angioOD = ep.data.load("healthyODAngio") angioOS = ep.data.load("healthyOSAngio")

fig, axes = plt.subplots(1, 2, figsize=(14, 7)) for i, (angio, title) in enumerate(zip([angioOD, angioOS], ["Right Eye (OD)", "Left Eye (OS)"])): # Show localizer with Angiography overlay for the complete retina angio.plot(ax=axes[i], slabs=["RET"]) axes[i].set_title(title) axes[i].axis("off")

plt.tight_layout() ``` Example OCTA

Related Projects:

Citation

If you use eyepy in your research, please cite it. You can find citation information and export BibTeX entries via the Zenodo record: DOI

Contributing

For details on contributing and setting up a development environment, see the Contributing Guide.

Owner

  • Name: MedVisBonn
  • Login: MedVisBonn
  • Kind: organization

Citation (CITATION.cff)

# This CITATION.cff file was generated with cffinit.
# Visit https://bit.ly/cffinit to generate yours today!

cff-version: 1.2.0
title: eyepy
message: >-
  If you use this software, please cite it using the
  metadata from this file.
type: software
authors:
  - given-names: Olivier
    family-names: Morelle
    email: oli4morelle@gmail.com
    orcid: 'https://orcid.org/0000-0001-6404-2726'
    affiliation: >-
      University of Bonn - Bonn-Aachen International
      Center for Information Technology (b-it) /
      University Hospital Bonn - Department of
      Ophthalmology
identifiers:
  - type: url
    value: 'https://github.com/MedVisBonn/eyepy/tree/v0.12.2'
repository-code: 'https://github.com/MedVisBonn/eyepy/tree/v0.12.2'
abstract: >-
  Eye imaging data from different device vendors
  often come in different file formats. Additionally,
  public datasets often have their own way of storing
  data for distribution. The lack of documentation
  for many device-specific formats is a problem
  already when working with a single data source
  while the pure amount of different formats slows
  down everyone trying to use data from multiple
  sources.

  This Python package aims at providing a unified
  interface to a wide variety of eye imaging formats
  and the execution of standard tasks such as data
  visualization and quantification on ETDRS grids.
  Thereby, it enables the development of
  device-independent software and algorithms.
keywords:
  - OCT
  - Drusen
  - Heidelberg
  - HEYEX
  - ETDRS
license: MIT
version: v0.12.2
date-released: '2023-11-15'

GitHub Events

Total
  • Create event: 4
  • Release event: 4
  • Issues event: 5
  • Watch event: 25
  • Delete event: 2
  • Issue comment event: 24
  • Push event: 13
  • Pull request review comment event: 1
  • Pull request review event: 2
  • Pull request event: 2
  • Fork event: 6
Last Year
  • Create event: 4
  • Release event: 4
  • Issues event: 5
  • Watch event: 25
  • Delete event: 2
  • Issue comment event: 24
  • Push event: 13
  • Pull request review comment event: 1
  • Pull request review event: 2
  • Pull request event: 2
  • Fork event: 6

Committers

Last synced: almost 3 years ago

All Time
  • Total Commits: 196
  • Total Committers: 5
  • Avg Commits per committer: 39.2
  • Development Distribution Score (DDS): 0.179
Top Committers
Name Email Commits
Olivier Morelle o****e@g****m 161
semantic-release s****e 17
github-actions a****n@g****m 11
github-actions g****s@g****m 6
Olivier Morelle O****4@u****m 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 4 months ago

All Time
  • Total issues: 17
  • Total pull requests: 2
  • Average time to close issues: 4 months
  • Average time to close pull requests: 6 days
  • Total issue authors: 14
  • Total pull request authors: 2
  • Average comments per issue: 5.59
  • Average comments per pull request: 9.0
  • Merged pull requests: 2
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 6
  • Pull requests: 1
  • Average time to close issues: 15 days
  • Average time to close pull requests: 2 days
  • Issue authors: 6
  • Pull request authors: 1
  • Average comments per issue: 4.17
  • Average comments per pull request: 7.0
  • Merged pull requests: 1
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • drombas (2)
  • yiqian-wang (2)
  • SaeedShurrab (2)
  • Oli4 (2)
  • Naveedkhan283 (1)
  • mattmagic149 (1)
  • big97kai (1)
  • Borja21091 (1)
  • paulschmeida (1)
  • ly1998117 (1)
  • charsooghi (1)
  • AlanZhang1995 (1)
  • EndingCredits (1)
  • msseibel (1)
Pull Request Authors
  • Borja21091 (2)
  • drombas (1)
Top Labels
Issue Labels
enhancement (2)
Pull Request Labels

Packages

  • Total packages: 2
  • Total downloads:
    • pypi 551 last-month
  • Total dependent packages: 1
    (may contain duplicates)
  • Total dependent repositories: 2
    (may contain duplicates)
  • Total versions: 44
  • Total maintainers: 1
pypi.org: eyepie

A python package to read, analyse and visualize OCT and fundus data form various sources.

  • Versions: 38
  • Dependent Packages: 1
  • Dependent Repositories: 1
  • Downloads: 136 Last month
Rankings
Dependent packages count: 4.7%
Stargazers count: 12.3%
Downloads: 13.2%
Average: 13.2%
Forks count: 14.2%
Dependent repos count: 21.8%
Maintainers (1)
Last synced: 4 months ago
pypi.org: eyepy

A python package to read, analyse and visualize OCT and fundus data form various sources.

  • Versions: 6
  • Dependent Packages: 0
  • Dependent Repositories: 1
  • Downloads: 415 Last month
Rankings
Dependent packages count: 10.0%
Stargazers count: 12.3%
Forks count: 14.2%
Average: 16.5%
Dependent repos count: 21.8%
Downloads: 24.4%
Maintainers (1)
Last synced: 4 months ago

Dependencies

poetry.lock pypi
  • argcomplete 1.12.3 develop
  • atomicwrites 1.4.0 develop
  • attrs 21.4.0 develop
  • cfgv 3.3.1 develop
  • colorama 0.4.4 develop
  • commitizen 2.23.0 develop
  • coverage 6.4.1 develop
  • decli 0.5.2 develop
  • distlib 0.3.4 develop
  • filelock 3.6.0 develop
  • identify 2.4.12 develop
  • importlib-metadata 4.11.3 develop
  • iniconfig 1.1.1 develop
  • jinja2 3.1.1 develop
  • markupsafe 2.1.1 develop
  • nodeenv 1.6.0 develop
  • platformdirs 2.5.1 develop
  • pluggy 1.0.0 develop
  • pre-commit 2.17.0 develop
  • prompt-toolkit 3.0.28 develop
  • py 1.11.0 develop
  • pytest 6.2.5 develop
  • pytest-cov 3.0.0 develop
  • pyyaml 6.0 develop
  • questionary 1.10.0 develop
  • termcolor 1.1.0 develop
  • toml 0.10.2 develop
  • tomlkit 0.10.1 develop
  • virtualenv 20.14.0 develop
  • wcwidth 0.2.5 develop
  • zipp 3.7.0 develop
  • cycler 0.11.0
  • fonttools 4.31.2
  • imagecodecs 2021.11.20
  • imageio 2.16.1
  • itk 5.2.1.post1
  • itk-core 5.2.1.post1
  • itk-filtering 5.2.1.post1
  • itk-io 5.2.1.post1
  • itk-numerics 5.2.1.post1
  • itk-registration 5.2.1.post1
  • itk-segmentation 5.2.1.post1
  • kiwisolver 1.4.2
  • matplotlib 3.5.1
  • networkx 2.6.3
  • numpy 1.21.5
  • packaging 21.3
  • pillow 9.0.1
  • pyparsing 3.0.7
  • python-dateutil 2.8.2
  • pywavelets 1.3.0
  • scikit-image 0.19.2
  • scipy 1.7.3
  • setuptools-scm 6.4.2
  • six 1.16.0
  • tifffile 2021.11.2
  • tomli 2.0.1
  • typing-extensions 4.1.1
pyproject.toml pypi
  • commitizen ^2.20.4 develop
  • pre-commit ^2.16.0 develop
  • pytest ^6.2.5 develop
  • pytest-cov ^3.0.0 develop
  • imagecodecs ^2021.11.20
  • itk ^5.2.1
  • matplotlib ^3.5.1
  • python >=3.7,<3.11
  • scikit-image ^0.19.1
.github/workflows/_quality.yaml actions
  • actions/cache v2 composite
  • actions/checkout v2 composite
  • actions/setup-python v2 composite
  • snok/install-poetry v1.3 composite
.github/workflows/ci.yaml actions
  • actions/cache v3 composite
  • actions/checkout v3 composite
  • actions/setup-python v4 composite