BLS pulse algorithm

drive_bls_pulse – Driver interface to BLS pulse

drive_bls_pulse.__check_args(segment, mindur, maxdur, nbins, direction)

Sanity-checks the input arguments; raises ValueError if any checks fail.

Parameters:
  • segment (float) – Length of a segment in days
  • mindur (float) – Minimum signal duration to consider in days
  • maxdur (float) – Maximum signal duration to consider in days
  • nbins (int) – Number of bins per segment
  • direction (int) – Signal direction to accept; -1 for dips, +1 for blips, 0 for best, or 2 for best dip and blip
drive_bls_pulse.__init_parser(defaults)

Set up an argument parser for all possible command line options. Returns the parser object.

Parameters:defaults (dict) – Default values of each parameter
Return type:argparse.ArgumentParser
drive_bls_pulse.main()

Main function for this module. Parses all command line arguments, reads in data from stdin, and sends it to the proper BLS algorithm.

bls_pulse_python – Naive pure Python implementation

BLS_PULSE algorithm, based on bls_pulse.pro originally written by Peter McCullough.

bls_pulse_python.__calc_sr_max(n, nbins, mindur, maxdur, direction, binTime, binFlx, ppb)

Calculates the maximum signal residual for a given segment.

Parameters:
  • n (int) – Total number of points that were binned to this segment
  • nbins (int) – Number of bins in each segment
  • mindur (int) – Minimum signal duration to accept, in units of bins
  • maxdur (int) – Maximum signal duration to accept, in units of bins
  • direction (int) – Signal direction to accept; -1 for dips, +1 for blips, or 0 for best
  • binTime (numpy.ndarray) – Array of binned times
  • binFlx (numpy.ndarray) – Array of binned fluxes
  • ppb (numpy.ndarray) – Weights for each bin; each weight is the number of points that were binned to the corresponding bin
Return type:

tuple

bls_pulse_python.__convert_duration_to_bins(duration_days, nbins, segment_size, duration_type)

Converts the requested duration (in days) to a duration in (full) units of bins. Rounds down for min and round up for max.

Parameters:
  • duration_days (float) – Duration to convert in days
  • nbins (int) – Number of bins in a segment
  • segment_size (float) – Size of a segment in days
  • duration_type (str) – Type of duration to calculate. Valid values are min and max
Return type:

float

bls_pulse_python.bls_pulse(time, flux, fluxerr, n_bins, segment_size, min_duration, max_duration, direction=0, detrend_order=0)

Main function for this module; performs the BLS pulse algorithm on the input lightcurve data. Lightcurve should be 0-based if no detrending is used.

See Kovacs et al. (2002)

Parameters:
  • time (numpy.ndarray) – Array of times of observations; nominally in units of days
  • flux (numpy.ndarray) – Array of fluxes corresponding to times
  • fluxerr (numpy.ndarray) – Array of flux errors corresponding to times
  • n_bins (int) – Number of bins in each segment
  • segment_size (float) – Length of a segment, in days
  • min_duration (float) – Minimum signal duration to accept, in days
  • max_duration (float) – Maximum signal duration to accept, in days
  • direction (int) – Signal direction to accept; -1 for dips, +1 for blips, or 0 for best
  • detrend_order (int) – Order of detrending to use on input; 0 for no detrending
Return type:

dict

bls_pulse_vec – Vectorized Python implementation

bls_pulse_vec.__compute_signal_residual(binned_segment, matrix, duration, n_bins_min_duration, direction)

Run BLS algorithm on a binned segment.

Parameters:
  • binned_segment (pandas.DataFrame) – Segment for which to calculate the residual
  • matrx – Matrix of i1, i2 indices
  • duration (numpy.ndarray) – Array of durations to consider
  • n_bins_min_duration (int) – Length of minimum duration in full bins
  • direction (int) – Signal direction to accept; -1 for dips, +1 for blips, or 0 for best
Return type:

pandas.Series

bls_pulse_vec.__phase_bin(segment, bins)

Phase-bin a light curve segment.

Parameters:
  • segment (pandas.DataFrame) – Segment to bin
  • bins (numpy.ndarray) – Array of bin edges to use
Return type:

pandas.DataFrame

bls_pulse_vec.__reindex_to_matrix(series, matrix)

Reindexes a series on a 2d matrix of values. Pandas does not support 2d indexing, so we need to flatten the matrix, reindex, and then reshape the result back to 2d.

Parameters:
  • series (pandas.Series) – Array to reindex
  • matrix (numpy.ndarray) – Reindexing matrix
Return type:

numpy.ndarray

bls_pulse_vec.bls_pulse(time, flux, fluxerr, n_bins, segment_size, min_duration, max_duration, detrend_order=3, direction=0, remove_nan_segs=False)

Main function for this module; performs the BLS pulse algorithm on the input lightcurve data, in a vectorized way. Lightcurve should be 0-based if no detrending is used.

See Kovacs et al. (2002)

Parameters:
  • time (numpy.ndarray) – Array of times of observations; nominally in units of days
  • flux (numpy.ndarray) – Array of fluxes corresponding to times
  • fluxerr (numpy.ndarray) – Array of flux errors corresponding to times
  • n_bins (int) – Number of bins in each segment
  • segment_size (float) – Length of a segment, in days
  • min_duration (float) – Minimum signal duration to accept, in days
  • max_duration (float) – Maximum signal duration to accept, in days
  • direction (int) – Signal direction to accept; -1 for dips, +1 for blips, or 0 for best
  • detrend_order (int) – Order of detrending to use on input; 0 for no detrending
  • remove_nan_segs (bool) – Remove from the output segments with no accepted events
Return type:

dict

bls_pulse_cython – Optimized Cython implementation