Source code for lightkurve.io.cdips

"""Reader for A PSF-Based Approach to TESS Cluster Difference Imaging Photometric Survey (CDIPS) light curves

Website: https://archive.stsci.edu/hlsp/cdips
Product Description: https://archive.stsci.edu/hlsps/cdips/hlsp_cdips_tess_ffi_all_tess_v01_readme.md
"""
import logging

from ..lightcurve import TessLightCurve
from ..utils import TessQualityFlags

from .generic import read_generic_lightcurve

log = logging.getLogger(__name__)

[docs]def read_cdips_lightcurve(filename, flux_column="IRM1", include_inst_errs=False, quality_bitmask=None): """Returns a TESS CDIPS `~lightkurve.lightcurve.LightCurve`. Note: CDIPS light curves have already had quality filtering applied, and do not provide the bitflags necessary for a user to apply a new bitmask. Therefore, frames corresponding to "momentum dumps and coarse point modes" are removed according to Bouma et al. 2019, and no other quality filtering is allowed. The `quality_bitmask` parameter is ignored but accepted for compatibility with other data format readers. More information: https://archive.stsci.edu/hlsp/cdips Parameters ---------- filename : str Local path or remote url of CDIPS light curve FITS file. flux_column : str 'IFL#', 'IRM#', 'TFA#', or 'PCA#' (# = 1, 2, or 3) Which column in the FITS file contains the preferred flux data? include_inst_errs: bool Whether to include the instrumental flux/magnitude errors (Errors are not provided for trend-filtered magnitudes) """ ap = flux_column[-1] # Only the instrumental magnitudes are provided, and are not provided for # trend-filtered light curves. User should select whether to include the # instrumental errors or ignore them if include_inst_errs: # If fluxes are requested, return flux errors if flux_column[:-1].lower()=="ifl": flux_err_column = f"ife{ap}" # Otherwise magnitudes are being requested, return magnitude errors else: flux_err_column = f"ire{ap}" else: flux_err_column = "" # Set the appropriate error column for this aperture quality_column = f"irq{ap}" lc = read_generic_lightcurve(filename, time_column="tmid_bjd", flux_column=flux_column.lower(), flux_err_column=flux_err_column, quality_column=quality_column, time_format='btjd') # Filter out poor-quality data # NOTE: Unfortunately Astropy Table masking does not yet work for columns # that are Quantity objects, so for now we remove poor-quality data instead # of masking. Details: https://github.com/astropy/astropy/issues/10119 # CDIPS uses their own quality keywords instead of the default bitflags # Based on Bouma+2019, they filter out coarse point (4) and desat (32) # as well as other cadences flagged for particular sectors quality_mask = (lc['quality']=="G") | (lc['quality']=="0") lc = lc[quality_mask] lc.meta["AUTHOR"] = "CDIPS" lc.meta['TARGETID'] = lc.meta.get('TICID') lc.meta['QUALITY_BITMASK'] = 36 lc.meta['QUALITY_MASK'] = quality_mask return TessLightCurve(data=lc)