medvisbonn / eyepy Goto Github PK
View Code? Open in Web Editor NEWA python package to read, analyse and visualize OCT and fundus data from various sources.
Home Page: https://medvisbonn.github.io/eyepy/
License: MIT License
A python package to read, analyse and visualize OCT and fundus data from various sources.
Home Page: https://medvisbonn.github.io/eyepy/
License: MIT License
Thank you for the great library, it helps a lot, it is amazing.
I am loding OCT Raw Data (HEYEX .vol format). I am wondering if the center of the grid (e.g. ETDRS grid) is written somewhere in the .vol file.
I noticed that there is an optional center
argument in annotations.py
center: Optional[tuple[float, float]] = None,
Also in grids.py
it is written that if center is not None
there is a transformation and if it is None probably just it will take the center of the localizer image.
if center is not None:
translation = transform.AffineTransform(translation=np.array(center) -
np.array(mask_shape) / 2)
I am wondering if there is such an information in HEYEX .vol file or it is always use the center of the localizer image unless we pass a tuple ourselves.
Thank you
I tried to read my e2e file but I get the following error:
import eyepy as ep
ev = ep.import_heyex_e2e("123456.E2E", single=False)
response:
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
Cell In[18], line 1
----> 1 ev = ep.import_heyex_e2e("76543017.E2E", single=False)
File /scratch/ag9454/conda-envs/ppml/lib/python3.10/site-packages/eyepy/io/__init__.py:34, in import_heyex_e2e(path, single)
20 def import_heyex_e2e(path: Union[str, Path],
21 single=True) -> Union[EyeVolume, List[EyeVolume]]:
22 """ Read a Heyex E2E file
23
24 This function is a thin wrapper around the HeE2eReader class and
(...)
32
33 """
---> 34 return HeE2eReader(path, single=single).volume
File /scratch/ag9454/conda-envs/ppml/lib/python3.10/site-packages/eyepy/io/he/e2e_reader.py:108, in HeE2eReader.__init__(self, path, single)
105 self._bscan_meta = None
107 self._current_volume_index = 0
--> 108 self._sort_folders(self.current_volume_index)
File /scratch/ag9454/conda-envs/ppml/lib/python3.10/site-packages/eyepy/io/he/e2e_reader.py:130, in HeE2eReader._sort_folders(self, index)
128 def _sort_folders(self, index):
129 self._folders = defaultdict(list)
--> 130 for folder in self._single_volumes[index]:
131 t = folder.header.type
132 s = "enface" if folder.header.ind == 0 else "bscan"
IndexError: list index out of range
I tried also:
from eyepy.data import load
# Import HEYEX XML export
ev = load("drusen_patient")
response:
B-scans are not equally spaced. Projections into the enface space are distorted.
What might be the problem??
Hello together,
thank you for your repository. It seems to work well for extracting .vol data.
We plan to export our data to another file format such as Nifti, Dicom or raw/mhd. Are you aware of functions to convert EyeVolume data into another format?
We are looking to run some analysis on over 35k files from Heyex. These files are structured in folders per patient and it seems that the actual imaging is in .sdb files. Any idea how to open these files programmatically in Python? Seems like every project out there expects a different file format...
I try to install your library but I get:
note: This error originates from a subprocess, and is likely not a problem with pip.
error: legacy-install-failure
× Encountered error while trying to install package.
╰─> imagecodecs
note: This is an issue with the package mentioned above, not pip.
hint: See above for output from the failure.
pip install -U eyepie
Dear Morelle,
Thanks for building this useful packages for OCT data analysis.
I wonder what post processing the packages is using after reading the raw data volumes. It looks different from the results generated by just octs = np.sqrt(np.sqrt(octs))
and octs[octs>1] = 0
. I find one post porcessing here
eyepy/eyepy/io/heyex/vol_export.py
Line 125 in 0d572c3
BTW, do you have any idea about the projection artifacts removal step, a post processing for OCTA data?
Thanks and looking forward to your reply!
I want to get the scale_x of oct image, so that i can get the true size of oct (not in pixels)
I notice that in https://medvisbonn.github.io/eyepy/formats/he_e2e_types/Type10004/ it has scale_x and i tried it into on of my e2e file.
I'm pretty sure it's nothing like scalue_y ,which means pixel size * scale_y can get the true size.
1024 * 0.9146999716758728 is not 5.9 mm
so what's this scale_x means, and is there any chance i can get true x for e2e file.
Hi there. I am testing the package a bit to get an idea of how it works.
When plotting B-scans with segmentation overlay the boundaries do not match.
It seems that what happens is that segmentation and B-scans are stored with different orders.
I am trying to read meta data information from .vol file but it gives error "buffer is too small for requested array"
I have also attached the screen shot of the error.
Could please help why i am getting this error ?
Thanks,
Naveed
Hi! I tried installing eyepy in a fresh Google Colab notebook but I got some dependency error.
Not sure if it is related to Google Colab or eyepy but it may be similar to #8 .
I think I tested the same thing with the previous eyepy version and it worked fine.
Here is the link to the notebook.
Hi, I wonder if there is a way to load the bscans & layer segmentation data without performing motion correction via affine transformation?
Hi Olivier,
I'm working with a dataset that has a lot of not equally spaced OCTs. The current eyepy verson does not seem to support loading such volumes (in line 167 in eyepy/io/utils.py)
msg = "B-scans are not equally spaced. Data can not be imported."
raise ValueError(msg)
Is it possible to just set the spacing to a default number and still load the volume?
BTW, I've also been using the eyelab for segmentation, it works so well! It would also be great if you could provide an exe build that supports loading non-uniformly spaced volumes.
Thanks!
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.