C++ C Shell
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
CMake
build_scripts
coela_analysis/src
coela_core
coela_luckypipe/src
coela_random
coela_utility/src
examples
getoptpp @ 431b1e6
luckycam_pipeline
.gitmodules
LICENCE.txt
Readme.md

Readme.md

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