MCPcopy
hub / github.com/mne-tools/mne-python / _minimize_time_diff

Function _minimize_time_diff

mne/epochs.py:3951–3982  ·  view source on GitHub ↗

Find a boolean mask to minimize timing differences.

(t_shorter, t_longer)

Source from the content-addressed store, hash-verified

3949
3950
3951def _minimize_time_diff(t_shorter, t_longer):
3952 """Find a boolean mask to minimize timing differences."""
3953 keep = np.ones((len(t_longer)), dtype=bool)
3954 # special case: length zero or one
3955 if len(t_shorter) < 2: # interp1d won't work
3956 keep.fill(False)
3957 if len(t_shorter) == 1:
3958 idx = np.argmin(np.abs(t_longer - t_shorter))
3959 keep[idx] = True
3960 return keep
3961 scores = np.ones(len(t_longer))
3962 x1 = np.arange(len(t_shorter))
3963 # The first set of keep masks to test
3964 kwargs = dict(copy=False, bounds_error=False, assume_sorted=True)
3965 shorter_interp = interp1d(x1, t_shorter, fill_value=t_shorter[-1], **kwargs)
3966 for ii in range(len(t_longer) - len(t_shorter)):
3967 scores.fill(np.inf)
3968 # set up the keep masks to test, eliminating any rows that are already
3969 # gone
3970 keep_mask = ~np.eye(len(t_longer), dtype=bool)[keep]
3971 keep_mask[:, ~keep] = False
3972 # Check every possible removal to see if it minimizes
3973 x2 = np.arange(len(t_longer) - ii - 1)
3974 t_keeps = np.array([t_longer[km] for km in keep_mask])
3975 longer_interp = interp1d(
3976 x2, t_keeps, axis=1, fill_value=t_keeps[:, -1], **kwargs
3977 )
3978 d1 = longer_interp(x1) - t_shorter
3979 d2 = shorter_interp(x2) - t_keeps
3980 scores[keep] = np.abs(d1, d1).sum(axis=1) + np.abs(d2, d2).sum(axis=1)
3981 keep[np.argmin(scores)] = False
3982 return keep
3983
3984
3985@verbose

Callers 1

_get_drop_indicesFunction · 0.85

Calls 2

fillMethod · 0.80
sumMethod · 0.45

Tested by

no test coverage detected