Contributor
cgdogan

DICOM & BioFormats


Mentors
Birm, Tony Pan
Organization
caMicroscope
Technologies
c
Topics
web, graphics
My project goal was to add DICOM file support to caMicroscope, a Whole Slide Image viewer. The viewer backend (OpenSlide) didn't support DICOM, so we needed a second backend. Surprisingly, before the coding period started, OpenSlide did get DICOM file support and this gave me the opportunity to tackle the bigger challenge of integrating BioFormats into caMicroscope. This would be extraordinary, as BioFormats is a Java library with no C wrappers available online. I started by refactoring caMicroscope code to use a single base Dockerfile which compiled OpenSlide. Then I made a Java wrapper and prepared its corresponding C caller. For this, I had chosen GraalVM C API, but once I found out about its level of performance and its requirement to achieve high code covergage first (for metadata collection), I rewrote it for Java JNI. To make it available to the two derivatives of our base image, I refactored this to be a separate project. We also needed to make this available to our Python image metadata server, so I wrote a wrapper in Python using cffi.