SingleTileDestripeStep

This step should be run on NIRCam only!

Provides a number of methods to attempt to remove 1/f noise in NIRCam data just using the information in each tile (as opposed to the MultiTileDestripeStep, which runs on everything). If you have extended emission in your data, set filter_diffuse=True. We’ve seen good results with the default settings, but they can be tuned to your liking. Can be run on both the output from level 1 (i.e. rate.fits files) which we recommend, or from level 2 and beyond (i.e. cal.fits files). We recommend running straight after level 1 as the stripes should ideally be corrected before flat-fielding.

If you have subarray observations, quadrants will automatically be set to False, as the readout is different in these modes.

The PCA implementation for NIRCam destriping was adapted from work by Elizabeth Watkins (University of Manchester), and up-to-date code is available at this GitHub repository.

API

class pjpipe.SingleTileDestripeStep(in_dir, out_dir, step_ext, procs, quadrants=True, vertical_subtraction=True, destriping_method='median_filter', vertical_destriping_method='row_median', filter_diffuse=False, min_mask_frac=0.2, sigma=3, npixels=3, dilate_size=11, max_iters=20, filter_scales=None, filter_extend_mode='reflect', pca_components=50, pca_reconstruct_components=10, overwrite=False)[source]

NIRCAM/NIRISS Destriping routines

Contains a number of routines to destripe NIRCAM or NIRISS data – median filtering, PCA, and an equivalent of remstripe from the CEERS team

Parameters:
  • in_dir – Input directory

  • out_dir – Output directory

  • step_ext – .fits file extension to run step on

  • procs – Number of processes to run in parallel

  • quadrants – Whether to split the chip into 512 pixel segments, and destripe each (mostly) separately. Defaults to True

  • vertical_subtraction – Perform sigma-clipped median column subtraction? Defaults to True

  • destriping_method – Method to use for destriping. Allowed options are given by DESTRIPING_METHODS. Defaults to ‘median_filter’

  • vertical_destriping_method – Method to use for vertical destriping. Allowed options are given by DESTRIPING_METHODS. Defaults to ‘row_median’

  • filter_diffuse – Whether to perform high-pass filter on data, to remove diffuse, extended emission. Defaults to False, but should be set True for observations where emission fills the FOV

  • min_mask_frac – Minimum fraction of unmasked data in quadrants to calculate a median. Defaults to 0.2 (i.e. 20% unmasked)

  • sigma – Sigma for sigma-clipping. Defaults to 3

  • npixels – Pixels to grow for masking. Defaults to 5

  • dilate_size – make_source_mask dilation size. Defaults to 11

  • max_iters – Maximum sigma-clipping iterations. Defaults to 20

  • filter_scales – Scales for filtering. Used in median filtering and smooth

  • filter_extend_mode – How to extend values in the filter beyond array edge. Default is “reflect”. See the specific docs for more info

  • pca_components – Number of PCA components to model. Defaults to 50

  • pca_reconstruct_components – Number of PCA components to use in reconstruction. Defaults to 10

  • overwrite – Whether to overwrite or not. Defaults to False

do_step()[source]

Run single-tile destriping

fit_robust_pca(data, err, mask, mask_column_frac=0.25, min_column_frac=0.5)[source]

Fits the robust PCA algorithm

Parameters:
  • data – Input data

  • err – Input errors

  • mask – Where data is masked

  • mask_column_frac – In low masked cases, take the data where less than mask_column_frac is masked. Defaults to 0.25

  • min_column_frac – In highly masked cases, take min_column_frac of data to ensure we have enough to fit. Defaults to 0.5

get_filter_diffuse(data, mask, dq_mask)[source]

Filter out diffuse emission using Butterworth filter

Parameters:
  • data – Input data

  • mask – Pre-calculated mask

  • dq_mask – Calculated data quality mask

make_destripe_plot(in_im, noise_model, out_name)[source]

Create diagnostic plot for the destriping

Parameters:
  • in_im – Input datamodel

  • noise_model – Model for the stripes

  • out_name – Output filename

make_mask_plot(data, mask, out_name, filter_diffuse=False)[source]

Create mask diagnostic plot

Parameters:
  • data – Input data

  • mask – Calculated mask

  • out_name – Output filename

  • filter_diffuse – Whether to filter diffuse emission. Defaults to False

parallel_destripe(file)[source]

Parallel destriping function

Parameters:

file – input file

reconstruct_pca(eigen_system_dict, data, err, mask)[source]

Reconstruct PCA from the fit

Parameters:
  • eigen_system_dict – Dictionary of the outputs from the PCA fit

  • data – Input data

  • err – Input error

  • mask – Input mask

run_median_filter(im, prev_noise_model, out_name, is_subarray=False, quadrants=True, transpose=False)[source]

Run a series of filters over the row medians. From Mederic Boquien.

Parameters:
  • im – Input datamodel

  • prev_noise_model – Previously calculated noise model, to subtract before destriping

  • out_name – Output filename

  • is_subarray – Whether is subarray or not. Defaults to False

  • quadrants – Whether to break out by quadrants. Defaults to True

  • transpose – Whether data has been transposed. Defaults to False

run_pca_denoise(im, prev_noise_model, pca_file, out_name, is_subarray=False, quadrants=True, transpose=False)[source]

PCA-based de-noising

Build a PCA model for the noise using the robust PCA implementation from Tamas Budavari and Vivienne Wild. We mask the data, optionally high-pass filter (Butterworth) to remove extended diffuse emission, and build the PCA model from there. pca_final_med_row_subtraction is on, it will do a final row-by-row median subtraction, to catch large-scale noise that might get filtered out.

Parameters:
  • im – Input datamodel

  • prev_noise_model – Previously calculated noise model, to subtract before destriping

  • pca_file – Where to save PCA model to

  • out_name – Output filename

  • is_subarray – Whether image is subarray or not. Defaults to False

  • quadrants – Whether to break out by quadrants. Defaults to True

  • transpose – Whether data has been transposed. Defaults to False

run_remstriping(im, prev_noise_model, out_name, is_subarray=False, quadrants=True, transpose=False)[source]

Destriping based on the CEERS remstripe routine

Mask out sources, then collapse a median along x and y to remove stripes.

Parameters:
  • im – Input datamodel

  • prev_noise_model – Previously calculated noise model, to subtract before destriping

  • out_name – Output filename

  • is_subarray – Whether image is subarray or not. Defaults to False

  • quadrants – Whether to break out by quadrants. Defaults to True

  • transpose – Whether data has been transposed. Defaults to False

run_row_median(im, out_name, prev_noise_model, quadrants=True, transpose=False)[source]

Calculate sigma-clipped median for each row. From Tom Williams.

Parameters:
  • im – Input datamodel

  • out_name – Output filename

  • prev_noise_model – Previously calculated noise model, to subtract before destriping

  • out_name – Output filename

  • quadrants – Whether to break out by quadrants. Defaults to True

  • transpose – Whether data has been transposed. Defaults to False

run_smooth(im, prev_noise_model, out_name, is_subarray=False, quadrants=False, transpose=False)[source]

Smoothing-based de-noising

Calculate the sigma-clipped median over the rows, smooth these over a range of scales and use this to subtract. Should have the benefit of maintaining flux without necessarily having to filter away the large-scale structure. This is based on Dan Coe’s algorithm, except we do a number of scales here to effectively remove noise at multiple levels

Parameters:
  • im – Input datamodel

  • prev_noise_model – Previously calculated noise model, to subtract before destriping

  • out_name – Output filename

  • is_subarray – Whether image is subarray or not. Defaults to False

  • quadrants – Whether to break out by quadrants. Defaults to False

  • transpose – Whether data has been transposed. Defaults to False

run_step(files, procs=1)[source]

Wrap paralellism around the destriping

Parameters:
  • files – List of files to destripe

  • procs – Number of parallel processes to run. Defaults to 1

run_vertical_subtraction(im, prev_noise_model, is_subarray=False, transpose=False)[source]

Median filter subtraction of columns (optional diffuse emission filtering)

Parameters:
  • im – Input datamodel

  • prev_noise_model – Already calculated noise model, to subtract before doing vertical subtraction

  • is_subarray – Whether the image is a subarray. Defaults to False

  • transpose – Whether to transpose the data. Defaults to False