User Manual#

Installing KBMOD#

To build KBMOD you will require: * GPU and drivers * Cuda Toolkit >= 8.0 * CMake >= 3.12

Ensure your NVIDIA drivers are correctly installed and that the graphics cards are visible and working normally. The easiest way to achieve this would be to run

nvidia-smi

Ensure that the NVIDIA’s nvcc compiler is available on your system and is visible by running

nvcc --version

It is possible that the compiler is installed but not discoverable. In that case add its location to the system environment PATH variable by, if using bash for example, setting

export PATH=/path/to/cuda:$PATH

If CUDA Toolkit is not availible on your system follow their offical installation instructions. Optionally, if you use Anaconda virtual environments, the CUDA Toolkit is also availible as conda install cudatoolkit-dev. Depending on the version of drivers on your GPU, you might need to use an older cudatoolkit-dev version.

Running KBMOD#

To run a search, KBMOD must be provided with

  • appropriately pre-processed input data (see Input Files)

  • appropriate search and filter parameters (see Masking)

The search is initiated via the run_search class and consists of several phases:

  • Data is loaded from the input files as specified above (see Input Files for more details).

  • Masks are applied to the images to remove invalid pixels (see Masking for more details).

  • The shift and stack approach is used to search for potential trajectories originating from each pixel in the first image.

  • The list of potential trajectories is filtered using various metrics.

  • Remaining trajectories are clustered to remove duplicates. Only one trajectory per cluster is kept.

  • The found trajectories are compared against known objects and matches are indicated.

  • The found trajectories are output to result files for later analysis.

Data Model#

KBMOD uses an hierarchy of three nested data structures to store the image data over which it searches.

schematic

ImageStack#

The image_stack holds all of the image data for every time step. The main information stored is the images array, which holds one layered_image structure for each time step. The ImageStack also stores information that applies for all images such as a globalMask and an avgTemplate.

LayeredImage#

Each layered image holds the data from a single exposure, which consists of multiple layers including: a science image (the flux values), the variance image (representing the noise at each pixel), and MaskImage (representing per-pixel errors). In addition the layered_image tracks per-exposure information such as the PSF for the image and the time at which the image was taken.

RawImages#

A raw_image is the lowest level of data storage and effectively consists of a two-dimensional array of floating point values. These values can take on a variety of meanings depending on the use, including flux values, variance values, mask indicators, psi values, and phi values.