There's life in the old fish yet.
What is this?
Coelacanth is an ongoing effort to refactor and document a collection of C++ codes I wrote for lucky-imaging data-reduction and analysis, as described in my PhD thesis. The hope is that it might be useful to others: either in whole, in part, or as a cautionary lesson in how we used to do things.
What's the fish got to do with it?
Codes for EMCCD and lucky-imaging analysis == COELA , but 'coelacanth' is more memorable. That, and C++03 is a bit of a dinosaur.
So what's buried in there?
A framework for performing complex multi-coordinate-system pixel arithmetic on two-dimensional pixel arrays.
A minimal, C++-style implementation of the FITS image-file format, complete with bit-packing decompression.
Routines for bright-speckle location via cross-correlation with a carefully tuned PSF core model.
A simple (translation-only) but reasonably performant implementation of the Drizzle algorithm.
High-performance Monte-Carlo simulation code for simulating EMCCD data from light-intensity maps (built on UNURAN).
Fitting routines for extracting EMCCD parameters from raw data.
A full (multi-threaded) lucky-imaging pipeline, including:
- Asynchronous file-buffering and decompression
- Calibration routines for constructing per-pixel histograms from dark-frames data
- Image debias / flat-fielding routines built upon the EMCCD calibration
- Photon-thresholding for faint targets
- Various routines for multi-EMCCD data-synchronisation and mosaic building.
A set of decomposable, DRY-principle-adherent CMake build scripts.
Four years of sweat and C++ related tears.
This sounds useful. How do I get started?
Unfortunately there's no documentation yet, and progress is slow as this is effectively a side-project. However, if you're interested in digging in, do get in touch and I'll help out if I can.