# Pycorrelate¶

**Pycorrelate** computes fast and accurate cross-correlation over
arbitrary time lags.
Cross-correlations can be calculated on “uniformly-sampled” signals
or on “point-processes”, such as photon timestamps.
Pycorrelate allows computing cross-correlation at log-spaced lags covering
several orders of magnitude. This type of cross-correlation is
commonly used in physics or biophysics for techniques such as
*fluorescence correlation spectroscopy* (FCS) or
*dynamic light scattering* (DLS).

Two types of correlations are implemented:

- ucorrelate:
the classical textbook linear cross-correlation between two signals defined at
**uniformly-spaced**intervals (both signals having the same interval size). Only positive lags are computed and a max lag can be specified. Thanks to the limit in the computed lags, this function can be much faster than numpy.correlate. - pcorrelate:
cross-correlation of discrete events in a point-process
(i.e. a series of timestamps). Input arrays are timestamps (or “positions”)
of events, for example
**photon arrival times**. This function implements the algorithm in Laurence et al. Optics Letters (2006). This is a generalization of the multi-tau algorithm which retains high execution speed while allowing arbitrary time-lag bins.

Pycorrelate is implemented in Python 3 and operates on standard numpy arrays. Execution speed is optimized using numba.

- Free software: GNU General Public License v3
- Documentation: https://pycorrelate.readthedocs.io.