pyhctsa.operations.correlation.falling_sticks

pyhctsa.operations.correlation.falling_sticks(y)

Physical falling-sticks model of line-of-sight interaction.

As in stick_angles, each time-series value is treated as a rigid stick standing on the zero baseline, with sticks grouped by sign into a ‘positive’ set (protruding up from the zero level) and a ‘negative’ set (protruding down). Here, sticks are toppled: each stick rotates about its base towards later same-sign sticks and stops at whichever angle first brings it into contact with one – either its trunk striking the side of a taller later stick, or its underside striking the tip of a shorter one it topples clean over – or else it falls flat (angle = pi/2) if no later same-sign stick lies within reach (a stick of height h can only ever reach as far as horizontal distance h).

This differs from stick_angles, which only ever compares a stick to its immediate same-sign successor via the slope between them. falling_sticks instead allows a stick to skip over intervening sticks to hit a farther one, so it is sensitive to range-dependent local- extremum structure (e.g. a tall stick toppling clean over an intervening short one) that the purely local (i, i+1) comparison cannot see.

Adapted from a Python ‘FALLstick’ reference implementation by Eugene Chon <eugenechon04@gmail.com>.

Parameters:
y : array-like

The input time series (assumed z-scored: the sign split is around the mean, matching stick_angles’s convention).

Returns:

Statistics on the resulting fall-angle sequence (location, spread, shape, persistence), on the asymmetry between the positive and negative branches, and on the three collision types a fall can end in – falling flat, hitting the immediately next stick, or skipping over one or more sticks to hit a farther one – and the two ways a hit can occur – trunk-strike (case 1) vs. tip-strike/topple-over (case 2).

Return type:

dict