opticam ======= .. py:module:: opticam Submodules ---------- .. toctree:: :maxdepth: 1 /autoapi/opticam/align/index /autoapi/opticam/analysis/index /autoapi/opticam/background/index /autoapi/opticam/correctors/index /autoapi/opticam/finders/index /autoapi/opticam/fitting/index /autoapi/opticam/noise/index /autoapi/opticam/photometers/index /autoapi/opticam/plotting/index /autoapi/opticam/reducer/index /autoapi/opticam/utils/index Classes ------- .. autoapisummary:: opticam.BaseBackground opticam.DefaultBackground opticam.BaseLocalBackground opticam.DefaultLocalBackground opticam.DefaultFinder opticam.Reducer opticam.DifferentialPhotometer opticam.AperturePhotometer opticam.OptimalPhotometer opticam.FlatFieldCorrector opticam.Analyzer Functions --------- .. autoapisummary:: opticam.generate_flats opticam.generate_observations opticam.generate_gappy_observations opticam.check_data Package Contents ---------------- .. py:class:: BaseBackground(box_size) Bases: :py:obj:`abc.ABC` Base class for OPTICAM background estimators. .. py:attribute:: box_size .. py:method:: __call__(image) :abstractmethod: Compute the 2D background for an image. Parameters ---------- image : NDArray The image. Returns ------- Background2D The two-dimensional background. .. py:class:: DefaultBackground(box_size) Bases: :py:obj:`BaseBackground` Default background estimator. .. py:method:: __call__(image) Compute the 2D background for an image. Parameters ---------- image : NDArray The image. Returns ------- Background2D The two-dimensional background. .. py:class:: BaseLocalBackground(r_in_scale = 5, r_out_scale = 7.5, sigma_clip = SigmaClip(sigma=3, maxiters=10)) Bases: :py:obj:`abc.ABC` Base class for local background estimators. .. py:attribute:: r_in_scale :value: 5 .. py:attribute:: r_out_scale :value: 7.5 .. py:attribute:: sigma_clip .. py:method:: __call__(data, position, semimajor_axis, semiminor_axis, theta) :abstractmethod: Compute the local background and its error at a given position (**per pixel**). Parameters ---------- data : NDArray The image data. semimajor_axis : float The (unscaled) semi-major axis of the aperture. semiminor_axis : float The (unscaled) semi-minor axis of the aperture. theta : float The rotation angle of the PSF. position : Tuple[float, float] The x, y position at which to compute the local background. Returns ------- Tuple[float, float] The local background and its error per pixel. .. py:method:: get_annulus(position, semimajor_axis, semiminor_axis, theta) :abstractmethod: Define an annulus at the given position. Parameters ---------- position : NDArray The centre of the annulus. semimajor_axis : float The semimajor standard deviation of the PSF. semiminor_axis : float The semiminor standard deviation of the PSF. theta : float The orientation of the source **in radians**. Returns ------- Aperture The annulus. .. py:method:: get_stats(data, position, semimajor_axis, semiminor_axis, theta) Get the stats of the annulus. Parameters ---------- data : NDArray The image data. position : NDArray The centre of the annulus. semimajor_axis : float The semimajor standard deviation of the PSF. semiminor_axis : float The semiminor standard deviation of the PSF. theta : float The orientation of the source **in radians**. Returns ------- ApertureStats The stats of the annulus. .. py:class:: DefaultLocalBackground(r_in_scale = 5, r_out_scale = 7.5, sigma_clip = SigmaClip(sigma=3, maxiters=10)) Bases: :py:obj:`BaseLocalBackground` Default local background estimator using an elliptical annulus. .. py:method:: get_annulus(position, semimajor_axis, semiminor_axis, theta) Define an annulus at the given position. Parameters ---------- position : NDArray The centre of the annulus. semimajor_axis : float The semimajor standard deviation of the PSF. semiminor_axis : float The semiminor standard deviation of the PSF. theta : float The orientation of the source **in radians**. Returns ------- Aperture The annulus. .. py:method:: __call__(data, position, semimajor_axis, semiminor_axis = None, theta = 0.0) Compute the sigma-clipped local background (mean) and its error (standard deviation) at a given position. Parameters ---------- data : NDArray The image data. error : NDArray The error in the image data. position : NDArray The x, y position at which to compute the local background. semimajor_axis : float The (unscaled) semimajor axis of the aperture. semiminor_axis : float | None, optional The (unscaled) semiminor axis of the aperture, by default `None`. If `None`, it is assumed to be equal to the semimajor axis (i.e., the annulus is circular). theta : float, optional The rotation angle of the PSF, by default 0 (i.e., no rotation). Returns ------- Tuple[float, float] The local background (mean) and its error (standard deviation). .. py:class:: DefaultFinder(npixels, border_width = 0) Default source finder. Combines image segmentation with source deblending. .. py:attribute:: border_width :value: 0 .. py:attribute:: finder .. py:method:: __call__(data, threshold) .. py:class:: Reducer(out_directory, data_directory = None, c1_directory = None, c2_directory = None, c3_directory = None, rebin_factor = 1, flat_corrector = None, background = None, finder = None, threshold = 5, aperture_selector = np.median, remove_cosmic_rays = False, barycenter = True, number_of_processors = cpu_count() // 2, show_plots = True, verbose = True) Class for reducing OPTICAM data. .. py:attribute:: verbose :value: True .. py:attribute:: out_directory .. py:attribute:: logger .. py:attribute:: data_directory :value: None .. py:attribute:: c1_directory :value: None .. py:attribute:: c2_directory :value: None .. py:attribute:: c3_directory :value: None .. py:attribute:: rebin_factor :value: 1 .. py:attribute:: flat_corrector :value: None .. py:attribute:: aperture_selector .. py:attribute:: threshold :value: 5 .. py:attribute:: remove_cosmic_rays :value: False .. py:attribute:: barycenter :value: True .. py:attribute:: number_of_processors .. py:attribute:: show_plots :value: True .. py:attribute:: reference_files .. py:attribute:: transforms .. py:attribute:: unaligned_files :value: [] .. py:attribute:: catalogs :type: Dict[str, astropy.table.QTable] .. py:attribute:: psf_params .. py:method:: create_catalogs(max_catalog_sources = 15, n_alignment_sources = 15, transform_type = 'affine', rotation_limit = None, translation_limit = None, scale_limit = None, overwrite = False) Initialise the source catalogs for each camera. Some aspects of this method are parallelised for speed. Parameters ---------- max_catalog_sources : int, optional The maximum number of sources to include in the catalog, by default 30. Since source IDs are ordered by brightness, the brightest `max_catalog_sources` sources are included in the catalog. n_alignment_sources : int, optional The (maximum) number of sources to use for image alignment, by default 30. If `transform_type='translation'`, `n_alignment_sources` must be >= 1, and the brightest `n_alignment_sources` sources are used for image alignment. If `transform_type='affine'`, `n_alignment_sources` must be >= 3 and represents that *maximum* number of sources that *may* be used for image alignment. transform_type : Literal['affine', 'translation'], optional The type of transform to use for image alignment, by default 'affine'. 'translation' performs simple x, y translations, while 'affine' uses `astroalign.find_transform()`. 'affine' is generally more robust (and is therefore the default) while 'translation' can work with fewer sources. rotation_limit : float, optional The maximum rotation limit (in degrees) for affine transformations, by default `None` (no limit). scale_limit : float, optional The maximum scale limit for affine transformations, by default `None` (no limit). translation_limit : float | int | List[float | int] | None, optional The maximum translation limit for both types of transformations, by default `None` (no limit). Can be a scalar value that applies to both x- and y-translations, or an iterable where the first value defines the x-translation limit and the second value defines the y-translation limit. overwrite : bool, optional Whether to overwrite existing catalogs, by default False. .. py:method:: plot_background_meshes(save = False) Plot the background mesh over an image from each filter to verify it's appropriately sized. If stacked catalog images exist, those will be used. Otherwise, a random image will be chosen for each filter. Parameters ---------- save : bool, optional Whether to save the plot, by default `False`. .. py:method:: plot_growth_curves(targets = None, save = False) Plot the growth curves for the sources identified in the catalog images. The resulting plots are saved to out_directory/diag/growth_curves as PDF files. Parameters ---------- targets : Dict[str, int | List[int]] | None, optional The targets for which growth curves will be created, by default `None` (growth curves are created for all catalog sources). To create growth curves for specific targets, pass a dictionary with keys listing the desired filters and values listing each filter's correpsonding target(s). For example: ``` # plot growth curves for the three brightest sources in each catalog plot_growth_curves( targets = { 'g-band': [1, 2, 3], 'r-band': [1, 2, 3], 'i-band': [1, 2, 3], }, ) ``` save : bool, optional Whether to save the plots, by default `False`. .. py:method:: plot_psfs() Plot the PSFs for the catalog sources. .. py:method:: plot_snrs(save = False) Plot the signal-to-noise ratios for each catalogued source in the reference images. Parameters ---------- save : bool, optional Whether to save the plot, by default `False`. .. py:method:: plot_noise(save = False) Plot the noise characterisation for each reference image. Parameters ---------- save : bool, optional Whether to save the plot, by default 'False'. .. py:method:: create_gifs(keep_frames = True, overwrite = False) Create alignment gifs for each camera. Some aspects of this method are parallelised for speed. The frames are saved in out_directory/diag/*-band_gif_frames and the GIFs are saved in out_directory/cat. Parameters ---------- keep_frames : bool, optional Whether to save the GIF frames in out_directory/diag, by default True. If False, the frames will be deleted after the GIF is saved. overwrite : bool, optional Whether to overwrite existing GIFs, by default False. .. py:method:: plot_apertures(photometer, targets = None, save = False) Plot the apertures over each source. Parameters ---------- photometer : AperturePhotometer The `AperturePhotometer` instance. If a local background estimator has been defined, this will also be plotted. targets : Dict[str, int] | Dict[str, List[int]] | Dict[str, List[int] | int] | None The targets for which apertures will be plotted, by default `None` (apertures are plotted for all sources). To plot apertures for specific targets, pass a dictionary with keys listing the desired filters and values listing each filter's correpsonding target(s). For example: ``` # plot apertures for the three brightest sources in each filter photometer = opticam.AperturePhotometer() plot_apertures( photometer=photometer, targets = { 'g-band': [1, 2, 3], 'r-band': [1, 2, 3], 'i-band': [1, 2, 3], }, ) ``` save : bool, optional Whether to save the plots, by default `False`. .. py:method:: photometry(photometer, overwrite = False) Perform photometry on the catalogs using the provided photometer. Parameters ---------- photometer : BasePhotometer The photometer. Should be a subclass of `BasePhotometer`, or implement a `compute` method that follows the `BasePhotometer` interface. overwrite : bool, optional Whether to overwrite any existing light curves files computed using the same photometer, by default `False`. .. py:class:: DifferentialPhotometer(out_directory, show_plots = True) Helper class for creating relative light curves from OPTICAM data. .. py:attribute:: out_directory .. py:attribute:: show_plots :value: True .. py:attribute:: filters .. py:attribute:: t_ref .. py:attribute:: time_key :value: 'BMJD' .. py:attribute:: catalogs .. py:method:: get_relative_light_curve(fltr, target, comparisons, phot_label, prefix = None, match_other_cameras = False, show_diagnostics = True) Compute the relative light curve for a target source with respect to one or more comparison sources. By default, the relative light curve is computed for a single filter. The relative light curve is saved to out_directory/relative_light_curves. To automatically match the target and comparison sources across the other two filters, set match_other_cameras to True. Note that this can incorrectly match sources, so it is recommended to manually check the results. Parameters ---------- fltr : str The filter to compute the relative light curve for. target : int The catalog ID of the target source. comparisons : int | List[int] The catalog ID(s) of the comparison source(s). phot_label : str The photometry label, used for file reading and labelling. prefix : str, optional The prefix to use when saving the relative light curve (e.g., the target star's name), by default None. match_other_cameras : bool, optional Whether to match the target and comparison(s) IDs to the remaining catalog filters, by default `False`. If `True`, astroalign must be installed. show_diagnostics : bool, optional Whether to show diagnostic plots, by default True. Returns ------- Analyzer An Analyzer object containing the relative light curve(s). .. py:method:: _compute_relative_light_curve(fltr, target, comparisons, prefix, phot_label, show_diagnostics) Compute the relative light curve for a target source with respect to one or more comparison sources for a given filter. Parameters ---------- fltr : str The filter to compute the relative light curve for. target : int The catalog ID of the target source. comparisons : List[int] The catalog ID(s) of the comparison source(s). prefix : str | None The prefix to use when saving the relative light curve (e.g., the target star's name), by default None. phot_label : str The photometry label, used for file reading and labelling. show_diagnostics : bool Whether to show diagnostic plots, by default True. Returns ------- Lightcurve | None The relative light curve for the target source with respect to the comparison sources, or None if the light curve could not be computed. .. py:method:: _plot_relative_light_curve(relative_light_curve, target, comparisons, prefix, fltr, phot_label, ax = None) Plot the relative light curve for a target source with respect to one or more comparison sources for a given filter. Parameters ---------- relative_light_curve : Lightcurve The relative light curve to plot. target : int The catalog ID of the target source. comparisons : List[int] The catalog ID(s) of the comparison source(s). prefix : str | None The prefix to use when saving the relative light curve (e.g., the target star's name), by default None. fltr : str The filter to plot the relative light curve for. phot_label : str The photometry label, used for file reading and labelling. ax : Axes, optional The axes to plot the relative light curve on, by default None. If None, a new figure and axes will be created. .. py:method:: _plot_diag(fltr, comparison1, comparison2, comparison1_df, comparison2_df, phot_label, show) Plot the relative diagnostic light curve for two comparison sources for a given filter. Parameters ---------- fltr : str The filter to compute the relative light curve. comparison1 : int The catalog ID of the first comparison source. comparison2 : int The catalog ID of the second comparison source. comparison1_df : pd.DataFrame The data frame of the first comparison source. comparison2_df : pd.DataFrame The data frame of the second comparison source. pho_label : str The photometry label. t_ref : float The time of the earliest observation (used for plotting the relative light curve in seconds from t_ref). show : bool Whether to show the diagnostic plot. .. py:class:: AperturePhotometer(semimajor_axis = None, semiminor_axis = None, orientation = None, forced = False, source_matching_tolerance = 5.0, local_background_estimator = None) Bases: :py:obj:`BasePhotometer` A photometer for performing aperture photometry. .. py:attribute:: semimajor_axis :value: None .. py:attribute:: semiminor_axis :value: None .. py:attribute:: orientation :value: None .. py:method:: compute(image, dark_flux, background_rms, source_coords, image_coords, psf_params) Compute the fluxes of the catalogued sources from the given image. Parameters ---------- image : NDArray The image. If `self.local_background_estimator` is undefined, this image will be background subtracted. dark_flux : float The dark current's "flux" contribution. background_rms : NDArray | None The background RMS. May be `None` if `self.local_background_estimator` is defined. source_coords : NDArray The source coordinates in the catalogue. image_coords : NDArray | None The source coordinates in the image. If `match_sources` is True, this will be used to match sources in the image to sources in the catalogue. psf_params : Dict[str, float] The PSF parameters for the camera used to take the image. This parameter is defined in the catalogue and has the following keys: 'semimajor_sigma' (in pixels), 'semiminor_sigma' (in pixels), and 'orientation' (in *degrees*). Returns ------- Dict[str, List] The photometry results. .. py:method:: compute_aperture_flux(image, dark_flux, background_rms, position, psf_params) Compute the aperture flux of a source in the image. Parameters ---------- image : NDArray The image. dark_flux : float The dark current's "flux" contribution. background_rms : NDArray | None The background RMS. May be `None` if `self.local_background_estimator` is defined. position : NDArray The position of the source. psf_params : Dict[str, float] The PSF parameters for the camera used to take the image. This parameter is defined in the catalogue and has the following keys: 'semimajor_sigma' (in pixels), 'semiminor_sigma' (in pixels), and 'orientation' (in *degrees*). Returns ------- Tuple[float, float, float] | Tuple[float, float, float, float, float] The flux, flux error, and signal-to-noise ratio. If `local_background_estimator` is defined, the background and its error are also returned. .. py:method:: get_aperture(position, psf_params) .. py:method:: get_aperture_area(psf_params) Get the area of the aperture. Parameters ---------- psf_params : Dict[str, float], The PSF parameters. Returns ------- float The area of the aperture. .. py:class:: OptimalPhotometer(forced = False, source_matching_tolerance = 5.0, local_background_estimator = None) Bases: :py:obj:`BasePhotometer` A photometer that implements the optimal photometry method described in Naylor 1998, MNRAS, 296, 339-346. .. py:method:: compute(image, dark_flux, background_rms, source_coords, image_coords, psf_params) Compute the fluxes of the catalogued sources from the given image. Parameters ---------- image : NDArray The image. If `self.local_background_estimator` is undefined, this image will be background subtracted. dark_flux : float The dark current's "flux" contribution. background_rms : NDArray | None The background RMS. May be `None` if `self.local_background_estimator` is defined. source_coords : NDArray The source coordinates in the catalogue. image_coords : NDArray | None The source coordinates in the image. If `match_sources` is True, this will be used to match sources in the image to sources in the catalogue. psf_params : Dict[str, float] The PSF parameters for the camera used to take the image. This parameter is defined in the catalogue and has the following keys: 'semimajor_sigma' (in pixels), 'semiminor_sigma' (in pixels), and 'orientation' (in *degrees*). Returns ------- Dict[str, List] The photometry results. .. py:method:: compute_optimal_flux(image, dark_flux, background_rms, position, psf_params) Compute the optimal flux of a source in the image as described in Naylor 1998, MNRAS, 296, 339-346. Parameters ---------- image : NDArray The image. dark_flux : float The dark current's "flux" contribution. background_rms : NDArray | None The background RMS. May be `None` if `self.local_background_estimator` is defined. position : NDArray The position of the source in the image, given as (y, x) coordinates. psf_params : Dict[str, float] The PSF parameters for the camera used to take the image. This parameter is defined in the catalogue and has the following keys: 'semimajor_sigma' (in pixels), 'semiminor_sigma' (in pixels), and 'orientation' (in *degrees*). Returns ------- Tuple[float, float] | Tuple[float, float, float, float] The flux and flux error. If `local_background_estimator` is defined, the background and its error are also returned. .. py:method:: get_weights(var, position, psf_params) :staticmethod: Compute the optimal weight for each pixel in an image. Parameters ---------- var : NDArray The variance image. position : NDArray The position of the source. psf_params : Dict[str, float] The PSF parameters. Returns ------- Tuple[NDArray, float] The weights and the normalisation constant. .. py:class:: FlatFieldCorrector(out_directory, flats_directory = None, c1_flats_directory = None, c2_flats_directory = None, c3_flats_directory = None) Helper class for performing flat-field corrections on OPTICAM images. .. py:attribute:: out_directory .. py:attribute:: flat_paths .. py:attribute:: master_flats .. py:method:: create_master_flats(overwrite = False) Create master flat-field images for each available filter. Parameters ---------- overwrite : bool, optional Whether to overwrite the existing master flat-field image, by default False. .. py:method:: correct(image, fltr) Correct an image for flat-fielding. Parameters ---------- image : np.ndarray The image to correct. fltr : str The image filter. Returns ------- NDArray The corrected image. .. py:class:: Analyzer(out_directory, light_curves = None, norm = 'mean', prefix = None, phot_label = None, show_plots = True) Helper class for analyzing OPTICAM light curves. .. py:attribute:: norm :value: 'mean' .. py:attribute:: light_curves .. py:attribute:: out_directory .. py:attribute:: prefix :value: None .. py:attribute:: phot_label :value: None .. py:attribute:: show_plots :value: True .. py:method:: join(analyzer) Combine another `Analyzer` instance with the current one. If the new `Analyzer` has light curves with filters that are not present in the current `Analyzer`, those filters will be added. If the new `Analyzer` has light curves with filters that are already present in the current `Analyzer`, those light curves will be merged. Parameters ---------- analyzer : Analyzer The analyzer instance being combined with the current one. Returns ------- Analyzer A new `Analyzer` instance with the combined light curves. .. py:method:: rebin_light_curves(dt, method = 'mean') Rebin the light curves to a desired time resolution using `stingray.Lightcurve.rebin()`. Parameters ---------- dt : Quantity The desired time resolution for the rebinned light curves. This must be an astropy `Quantity` with units of time (e.g., `astropy.units.s`) to ensure correct handling of the time resolution. method : Literal['mean', 'sum'], optional The rebinning method, by default `'mean'`. .. py:method:: plot_light_curves(show_gtis = False) Plot the light curves. Parameters ---------- show_gtis : bool, optional Whether to highlight the Good Time Intervals on the light curve plot, by default `False`. Returns ------- Figure The figure containing the light curves. .. py:method:: phase_fold_light_curves(period) Phase fold each light curve using the given period. Parameters ---------- period : Quantity The period to use for phase folding. This must be an astropy `Quantity` with units of time (e.g., `astropy.units.s`) to ensure correct handling of the period. Returns ------- Dict[str, NDArray] The phase folded light curves. .. py:method:: phase_bin_light_curves(period, t0 = None, n_bins = 10, plot = True, subplot = True, sharey = False) Phase bin each light curve using the given period. Parameters ---------- period : Quantity The period to use for phase binning. This must be an astropy `Quantity` with units of time (e.g., `astropy.units.s`) to ensure correct handling of the period. t0 : float | None, optional Time of zero phase, by default `None`. If `None`, the first time value in the light curve will be used. n_bins : int, optional The number of phase bins, by default 10. plot : bool, optional Whether to plot the phase binned light curves, by default True. subplot : bool, optional Whether to plot filters in separate subplots, by default True. sharey : bool, optional Whether to render the plot with a common y-axis (useful for directly comparing amplitudes), by default False. Only used if `plot=True` and `subplot=True`. Returns ------- Dict[str, Dict[str, NDArray]] The phase binned light curves. .. py:method:: compute_power_spectra(norm = 'frac', scale = 'linear') Compute the power spectrum for each light curve using `stingray.Powerspectrum`. It's usually a good idea to call the rebin() method to rebin your light curves to a regular time grid before calling this method. Parameters ---------- norm : Literal['frac', 'abs'], optional The normalisation to use for the power spectrum, by default 'frac'. If 'frac', the power spectrum is normalised to fractional rms. If 'abs', the power spectrum is normalised to absolute power. scale : Literal['linear', 'log', 'loglog'], optional The scale to use for the plot, by default 'linear'. If 'linear', all axes are linear. If 'log', the frequency axis is logarithmic. If 'loglog', both the frequency and power axes are logarithmic. Returns ------- Dict[str, Powerspectrum] A dictionary containing the power spectrum for each light curve, where the keys are the filter names and the values are the power spectra. .. py:method:: compute_averaged_power_spectra(segment_size, rebin_factor = None, norm = 'frac', scale = 'linear') Compute the averaged power spectrum for each light curve using `stingray.AveragedPowerSpectrum`. It's usually a good idea to call the rebin() method to rebin your light curves to a regular time grid before calling this method. Parameters ---------- segment_size : Quantity The size of the segments to use for averaging the power spectra. This must be an astropy `Quantity` with units of time (e.g., `astropy.units.s`) to ensure correct handling of the segment size. rebin_factor : float | None, optional The factor by which to rebin the power spectrum in frequency. If 'None', no rebinning will be performed. If a float, the power spectrum will be geometrically/logarithmically rebinned with each bin being a factor `1 + rebin_factor` larger than the previous one. norm : Literal['frac', 'abs'], optional The normalisation to use for the power spectrum, by default 'frac'. If 'frac', the power spectrum is normalised to the fractional rms. If 'abs', the power spectrum is normalised to the absolute rms. scale : Literal['linear', 'log', 'loglog'], optional The scale to use for the plot, by default 'linear'. If 'linear', all axes are linear. If 'log', the frequency axis is logarithmic. If 'loglog', both the frequency and power axes are logarithmic. Returns ------- Dict[str, AveragedPowerspectrum] The averaged power spectrum for each light curve, where the keys are the filter names and the values are the averaged power spectra. .. py:method:: compute_lomb_scargle_periodograms(norm = 'frac', scale = 'linear') Compute the Lomb-Scargle periodogram for each light curve using `stingray.LombScarglePowerspectrum`. Parameters ---------- norm : Literal['abs', 'frac'], optional The normalisation to use for the Lomb-Scargle periodogram, by default 'frac'. If 'abs', the periodogram is normalised to absolute power. If 'frac', the periodogram is normalised to fractional rms. scale : Literal['linear', 'log', 'loglog'], optional The scale to use for the inferred frequencies, by default 'linear'. If 'linear', the frequency grid is linearly spaced. If 'log', the frequency grid is logarithmically spaced. If 'loglog', both the frequency and power axes will be in logarithm. The upper and lower bounds of the frequencies are the same in all cases. Returns ------- Tuple[NDArray, Dict[str, NDArray]] | Dict[str, NDArray] If no frequencies are provided, returns a tuple containing the frequencies and a dictionary of periodograms for each light curve. If frequencies are provided, returns a dictionary of periodogram powers for each light curve. .. py:method:: compute_cross_correlations(mode = 'same', norm = 'variance', force_match = True) Compute the cross-correlations for each pair of light curves using `stingray.CrossCorrelation`. Parameters ---------- mode : Literal['same', 'valid', 'full'], optional The mode to use for the cross-correlation, by default 'same'. See `stingray.CrossCorrelation` for details on the different modes. norm : Literal['none', 'variance'], optional The normalisation to use for the cross-correlation, by default 'variance'. See `stingray.CrossCorrelation` for details on the different normalisations. force_match : bool, optional Whether to force the light curves to have the same time columns before computing the cross-correlation, by default `True`. If `False`, cross-correlation calculations may fail if the light curves have different time columns. Returns ------- Dict[str, CrossCorrelation] A dictionary containing the cross-correlations for each pair of light curves, where the keys are tuples of filter names and the values are the cross-correlations. .. py:function:: generate_flats(out_dir, n_flats = 5, binning_scale = 4, overwrite = False) Create synthetic flat-field images. Parameters ---------- out_dir : str The directory to save the data. n_flats : int, optional The number of flats per camera, by default 5. binning_scale : int, optional The binning scale of the flat-field images, by default 4 (512x512). overwrite : bool, optional Whether to overwrite data if they currently exist, by default False. .. py:function:: generate_observations(out_dir, n_images = 100, circular_aperture = True, binning_scale = 4, overwrite = False) Create synthetic observation data for testing and following the tutorials. Parameters ---------- out_dir : str The directory to save the data. n_images : int, optional The number of images to create, by default 100. circular_aperture : bool, optional Whether to apply a circular aperture shadow to the images, by default True. binning_scale : int, optional The binning scale of the images, by default 4 (512x512). overwrite : bool, optional Whether to overwrite data if they currently exist, by default False. .. py:function:: generate_gappy_observations(out_dir, n_images = 1000, circular_aperture = True, binning_scale = 4, overwrite = False) Create synthetic observation data for testing and following the tutorials. Parameters ---------- out_dir : str The directory to save the data. n_images : int, optional The number of images to create, by default 100. circular_aperture : bool, optional Whether to apply a circular aperture shadow to the images, by default True. binning_scale : int, optional The binning scale of the images, by default 4 (512x512). overwrite : bool, optional Whether to overwrite data if they currently exist, by default False. .. py:function:: check_data(out_directory, data_directory = None, c1_directory = None, c2_directory = None, c3_directory = None, barycenter = True, verbose = True, return_output = False, logger = None, number_of_processors=cpu_count() // 2) Check that the data are self-consistent. Parameters ---------- out_directory : str The directory path to which any output files will be saved. data_directory : None | str, optional The directory path to the data for all three cameras, by default None. c1_directory : None | str, optional The directory path to the data for Camera 1, by default None. c2_directory : None | str, optional The directory path to the data for Camera 2, by default None c3_directory : None | str, optional The directory path to the data for Camera 3, by default None barycenter : bool, optional Whether to apply a Barycentric correction to the image time stamps, by default True. verbose : bool, optional Whether to print any output info, by default True. return_output : bool, optional Whether to return any output, by default False. logger : Logger | None, optional The logger, by default None. number_of_processors : _type_, optional The number of processors to use, by default `cpu_count() // 2`. Returns ------- None | Tuple[Dict[str, str], int, Dict[str, float], List[str], Dict[str, float], float] If `return_output=True`, the file paths, binning scale, Barycentric MJD dates, ignored files, file gains, and the reference date are returned. Otherwise, nothing is returned.