From a02a0d8c598afb9416035a3092269569f39967a1 Mon Sep 17 00:00:00 2001 From: Moritz-Alexander-Kern <92092328+Moritz-Alexander-Kern@users.noreply.github.com> Date: Fri, 9 Aug 2024 10:48:19 +0200 Subject: [PATCH] add new flag ignore_shared_time to BinnedSpiketrain --- elephant/conversion.py | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/elephant/conversion.py b/elephant/conversion.py index f3686d643..2b9f0c7d1 100644 --- a/elephant/conversion.py +++ b/elephant/conversion.py @@ -293,6 +293,8 @@ class BinnedSpikeTrain(object): The sparse matrix format. By default, CSR format is used to perform slicing and computations efficiently. Default: 'csr' + ignore_shared_time : bool, optional + If True, check for binning outside of common interval is possible. Raises ------ @@ -335,7 +337,8 @@ class BinnedSpikeTrain(object): """ def __init__(self, spiketrains, bin_size=None, n_bins=None, t_start=None, - t_stop=None, tolerance=1e-8, sparse_format="csr"): + t_stop=None, tolerance=1e-8, sparse_format="csr", + ignore_shared_time=False): if sparse_format not in ("csr", "csc"): raise ValueError(f"Invalid 'sparse_format': {sparse_format}. " "Available: 'csr' and 'csc'") @@ -352,6 +355,7 @@ def __init__(self, spiketrains, bin_size=None, n_bins=None, t_start=None, self.n_bins = n_bins self._bin_size = bin_size self.units = None # will be set later + self.ignore_shared_time = ignore_shared_time # Check all parameter, set also missing values self._resolve_input_parameters(spiketrains) # Now create the sparse matrix @@ -531,14 +535,15 @@ def check_consistency(): tolerance = self.tolerance if tolerance is None: tolerance = 0 - if self._t_start < start_shared - tolerance \ - or self._t_stop > stop_shared + tolerance: - raise ValueError("'t_start' ({t_start}) or 't_stop' ({t_stop}) is " - "outside of the shared [{start_shared}, " - "{stop_shared}] interval".format( - t_start=self.t_start, t_stop=self.t_stop, - start_shared=start_shared, - stop_shared=stop_shared)) + if not self.ignore_shared_time: + if self._t_start < start_shared - tolerance \ + or self._t_stop > stop_shared + tolerance: + raise ValueError("'t_start' ({t_start}) or 't_stop' ({t_stop}) is " + "outside of the shared [{start_shared}, " + "{stop_shared}] interval".format( + t_start=self.t_start, t_stop=self.t_stop, + start_shared=start_shared, + stop_shared=stop_shared)) if self.n_bins is None: # bin_size is provided