Skip to content

timstaley/coelacanth

Repository files navigation

#Coelacanth ###Codes for EMCCD and Lucky-Imaging Analysis logo

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.

  • A basic but reasonably performant implementation of the Keys81 algorithm for bicubic interpolation.

  • 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.

Releases

No releases published

Packages

No packages published