From f66ea6a567a36d82ba8b4dc0a27c6f6485a334e0 Mon Sep 17 00:00:00 2001 From: Alessio Buccino Date: Mon, 24 Nov 2025 18:20:26 +0100 Subject: [PATCH 01/19] auto-estimate margins based on freq_min/f0+Q for filters --- src/spikeinterface/preprocessing/filter.py | 58 +++++++++++++++++----- 1 file changed, 46 insertions(+), 12 deletions(-) diff --git a/src/spikeinterface/preprocessing/filter.py b/src/spikeinterface/preprocessing/filter.py index 78542e1f37..928d07d14b 100644 --- a/src/spikeinterface/preprocessing/filter.py +++ b/src/spikeinterface/preprocessing/filter.py @@ -43,7 +43,7 @@ class FilterRecording(BasePreprocessor): btype : "bandpass" | "highpass", default: "bandpass" Type of the filter margin_ms : float, default: 5.0 - Margin in ms on border to avoid border effect + Margin in ms on border to avoid border effect. coeff : array | None, default: None Filter coefficients in the filter_mode form. dtype : dtype or None, default: None @@ -78,7 +78,8 @@ def __init__( filter_order=5, ftype="butter", filter_mode="sos", - margin_ms=5.0, + margin_ms=5, + max_margin_s=5, add_reflect_padding=False, coeff=None, dtype=None, @@ -138,6 +139,22 @@ def __init__( direction=direction, ) + def adjust_margin_ms_for_highpass(self, freq_min, max_margin_s): + # compute margin as 3 times the period of the highpass cutoff + margin_ms = 3 * (1000.0 / freq_min) + # limit max margin + max_margin_ms = max_margin_s * 1000.0 + if margin_ms > max_margin_ms: + margin_ms = max_margin_ms + return margin_ms + + def adjust_margin_ms_for_notch(self, max_margin_s, q, f0): + margin_ms = (3 / np.pi) * (q / f0) * 1000.0 + max_margin_ms = max_margin_s * 1000.0 + if margin_ms < max_margin_ms: + margin_ms = max_margin_ms + return margin_ms + class FilterRecordingSegment(BasePreprocessorSegment): def __init__( @@ -217,8 +234,11 @@ class BandpassFilterRecording(FilterRecording): The highpass cutoff frequency in Hz freq_max : float The lowpass cutoff frequency in Hz - margin_ms : float - Margin in ms on border to avoid border effect + margin_ms : float | str, default: "auto" + Margin in ms on border to avoid border effect. + If "auto", margin is computed as 3 times the filter highpass cutoff period. + max_margin_s : float, default: 5 + Maximum margin in seconds when margin_ms is set to "auto". dtype : dtype or None The dtype of the returned traces. If None, the dtype of the parent recording is used {} @@ -229,7 +249,11 @@ class BandpassFilterRecording(FilterRecording): The bandpass-filtered recording extractor object """ - def __init__(self, recording, freq_min=300.0, freq_max=6000.0, margin_ms=5.0, dtype=None, **filter_kwargs): + def __init__( + self, recording, freq_min=300.0, freq_max=6000.0, margin_ms="auto", max_margin_s=5, dtype=None, **filter_kwargs + ): + if margin_ms == "auto": + margin_ms = self.adjust_margin_ms_for_highpass(freq_min, max_margin_s) FilterRecording.__init__( self, recording, band=[freq_min, freq_max], margin_ms=margin_ms, dtype=dtype, **filter_kwargs ) @@ -250,8 +274,11 @@ class HighpassFilterRecording(FilterRecording): The recording extractor to be re-referenced freq_min : float The highpass cutoff frequency in Hz - margin_ms : float - Margin in ms on border to avoid border effect + margin_ms : float | str, default: "auto" + Margin in ms on border to avoid border effect. + If "auto", margin is computed as 3 times the filter highpass cutoff period. + max_margin_s : float, default: 5 + Maximum margin in seconds when margin_ms is set to "auto". dtype : dtype or None The dtype of the returned traces. If None, the dtype of the parent recording is used {} @@ -262,7 +289,9 @@ class HighpassFilterRecording(FilterRecording): The highpass-filtered recording extractor object """ - def __init__(self, recording, freq_min=300.0, margin_ms=5.0, dtype=None, **filter_kwargs): + def __init__(self, recording, freq_min=300.0, margin_ms="auto", max_margin_s=5, dtype=None, **filter_kwargs): + if margin_ms == "auto": + margin_ms = self.adjust_margin_ms_for_highpass(freq_min, max_margin_s) FilterRecording.__init__( self, recording, band=freq_min, margin_ms=margin_ms, dtype=dtype, btype="highpass", **filter_kwargs ) @@ -283,8 +312,10 @@ class NotchFilterRecording(BasePreprocessor): The quality factor of the notch filter dtype : None | dtype, default: None dtype of recording. If None, will take from `recording` - margin_ms : float, default: 5.0 + margin_ms : float | str, default: "auto" Margin in ms on border to avoid border effect + max_margin_s : float, default: 5 + Maximum margin in seconds when margin_ms is set to "auto". Returns ------- @@ -292,11 +323,14 @@ class NotchFilterRecording(BasePreprocessor): The notch-filtered recording extractor object """ - def __init__(self, recording, freq=3000, q=30, margin_ms=5.0, dtype=None): - # coeef is 'ba' type - fn = 0.5 * float(recording.get_sampling_frequency()) + def __init__(self, recording, freq=3000, q=30, margin_ms="auto", max_margin_s=5, dtype=None): import scipy.signal + if margin_ms == "auto": + margin_ms = self.adjust_margin_ms_for_notch(max_margin_s, q, freq) + + fn = 0.5 * float(recording.get_sampling_frequency()) + coeff = scipy.signal.iirnotch(freq / fn, q) if dtype is None: From 7e7846421ee49061f65581e40a03e352ef38c579 Mon Sep 17 00:00:00 2001 From: Alessio Buccino Date: Tue, 25 Nov 2025 10:47:02 +0100 Subject: [PATCH 02/19] NotchFilter uses FilterRecording --- src/spikeinterface/preprocessing/filter.py | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/src/spikeinterface/preprocessing/filter.py b/src/spikeinterface/preprocessing/filter.py index 928d07d14b..89ed52d0fd 100644 --- a/src/spikeinterface/preprocessing/filter.py +++ b/src/spikeinterface/preprocessing/filter.py @@ -300,7 +300,7 @@ def __init__(self, recording, freq_min=300.0, margin_ms="auto", max_margin_s=5, self._kwargs.update(filter_kwargs) -class NotchFilterRecording(BasePreprocessor): +class NotchFilterRecording(FilterRecording): """ Parameters ---------- @@ -323,19 +323,16 @@ class NotchFilterRecording(BasePreprocessor): The notch-filtered recording extractor object """ - def __init__(self, recording, freq=3000, q=30, margin_ms="auto", max_margin_s=5, dtype=None): + def __init__(self, recording, freq=3000, q=30, margin_ms="auto", max_margin_s=5, dtype=None, **filter_kwargs): import scipy.signal if margin_ms == "auto": margin_ms = self.adjust_margin_ms_for_notch(max_margin_s, q, freq) fn = 0.5 * float(recording.get_sampling_frequency()) - coeff = scipy.signal.iirnotch(freq / fn, q) - if dtype is None: - dtype = recording.get_dtype() - dtype = np.dtype(dtype) + dtype = fix_dtype(recording, dtype) # if uint --> unsupported if dtype.kind == "u": @@ -344,15 +341,10 @@ def __init__(self, recording, freq=3000, q=30, margin_ms="auto", max_margin_s=5, "to specify a signed type (e.g. 'int16', 'float32')" ) - BasePreprocessor.__init__(self, recording, dtype=dtype) + FilterRecording.__init__(self, recording, coeff=coeff, margin_ms=margin_ms, dtype=dtype, **filter_kwargs) self.annotate(is_filtered=True) - - sf = recording.get_sampling_frequency() - margin = int(margin_ms * sf / 1000.0) - for parent_segment in recording._recording_segments: - self.add_recording_segment(FilterRecordingSegment(parent_segment, coeff, "ba", margin, dtype)) - self._kwargs = dict(recording=recording, freq=freq, q=q, margin_ms=margin_ms, dtype=dtype.str) + self._kwargs.update(filter_kwargs) # functions for API From b846118a1ff9bf2c80aeaaebc2ba62db9e270f3f Mon Sep 17 00:00:00 2001 From: Alessio Buccino Date: Tue, 25 Nov 2025 11:40:58 +0100 Subject: [PATCH 03/19] Notch filter is 'ba' --- src/spikeinterface/preprocessing/filter.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/spikeinterface/preprocessing/filter.py b/src/spikeinterface/preprocessing/filter.py index 89ed52d0fd..38485aff4a 100644 --- a/src/spikeinterface/preprocessing/filter.py +++ b/src/spikeinterface/preprocessing/filter.py @@ -341,7 +341,9 @@ def __init__(self, recording, freq=3000, q=30, margin_ms="auto", max_margin_s=5, "to specify a signed type (e.g. 'int16', 'float32')" ) - FilterRecording.__init__(self, recording, coeff=coeff, margin_ms=margin_ms, dtype=dtype, **filter_kwargs) + FilterRecording.__init__( + self, recording, coeff=coeff, filter_mode="ba", margin_ms=margin_ms, dtype=dtype, **filter_kwargs + ) self.annotate(is_filtered=True) self._kwargs = dict(recording=recording, freq=freq, q=q, margin_ms=margin_ms, dtype=dtype.str) self._kwargs.update(filter_kwargs) From 4149305a366a97a17461a71e34f0a9ed2527fef3 Mon Sep 17 00:00:00 2001 From: Alessio Buccino Date: Fri, 5 Dec 2025 13:00:01 +0100 Subject: [PATCH 04/19] Better margin behavior and 'Extract LFPs' tutorial --- doc/how_to/extract_lfps.rst | 565 ++++++++++++++++++ .../extract_lfps_files/extract_lfps_17_2.png | Bin 0 -> 29067 bytes .../extract_lfps_files/extract_lfps_19_1.png | Bin 0 -> 20533 bytes .../extract_lfps_files/extract_lfps_28_2.png | Bin 0 -> 75077 bytes .../extract_lfps_files/extract_lfps_31_0.png | Bin 0 -> 26729 bytes .../extract_lfps_files/extract_lfps_8_1.png | Bin 0 -> 25985 bytes examples/how_to/extract_lfps.py | 310 ++++++++++ src/spikeinterface/core/recording_tools.py | 8 +- src/spikeinterface/preprocessing/filter.py | 86 ++- 9 files changed, 939 insertions(+), 30 deletions(-) create mode 100644 doc/how_to/extract_lfps.rst create mode 100644 doc/how_to/extract_lfps_files/extract_lfps_17_2.png create mode 100644 doc/how_to/extract_lfps_files/extract_lfps_19_1.png create mode 100644 doc/how_to/extract_lfps_files/extract_lfps_28_2.png create mode 100644 doc/how_to/extract_lfps_files/extract_lfps_31_0.png create mode 100644 doc/how_to/extract_lfps_files/extract_lfps_8_1.png create mode 100644 examples/how_to/extract_lfps.py diff --git a/doc/how_to/extract_lfps.rst b/doc/how_to/extract_lfps.rst new file mode 100644 index 0000000000..4a7689b65e --- /dev/null +++ b/doc/how_to/extract_lfps.rst @@ -0,0 +1,565 @@ +Extract LFPs +============ + +Understanding filtering artifacts and chunking when extracting LFPs +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Local Field Potentials (LFPs) are low-frequency signals (<300 Hz) that +reflect the summed activity of many neurons. Extracting LFPs from +high-sampling-rate recordings requires bandpass filtering, but this can +introduce artifacts when not done carefully, especially when data is +processed in chunks (for memory efficiency). + +This tutorial demonstrates: 1. How to generate simulated LFP data 2. +Common pitfalls when filtering with low cutoff frequencies 3. How +chunking and margins affect filtering artifacts 4. Summary + +**Key takeaway**: For LFP extraction, use large chunks (30-60s) and +large margins (several seconds) to minimize edge artifacts, even though +this is less memory-efficient. + +.. code:: ipython3 + + import time + import numpy as np + import matplotlib.pyplot as plt + from pathlib import Path + import pandas as pd + import seaborn as sns + + import spikeinterface as si + import spikeinterface.extractors as se + import spikeinterface.preprocessing as spre + import spikeinterface.widgets as sw + from spikeinterface.core import generate_ground_truth_recording + +.. code:: ipython3 + + %matplotlib inline + +1. Generate simulated recording with low-frequency signals +---------------------------------------------------------- + +Let’s create a simulated recording and add some low-frequency sinusoids +that mimic LFP activity. + +.. code:: ipython3 + + # Generate a ground truth recording with spikes + # Use a higher sampling rate (30 kHz) to simulate raw neural data + recording, sorting = generate_ground_truth_recording( + durations=[300.0], # 300 s + sampling_frequency=30000.0, + num_channels=1, + num_units=4, + seed=2305, + ) + + print(f"Recording: {recording}") + print(f"Duration: {recording.get_total_duration():.1f} s") + print(f"Sampling frequency: {recording.sampling_frequency} Hz") + print(f"Number of channels: {recording.get_num_channels()}") + + +.. parsed-literal:: + + Recording: GroundTruthRecording (InjectTemplatesRecording): 1 channels - 30.0kHz - 1 segments + 9,000,000 samples - 300.00s (5.00 minutes) - float32 dtype - 34.33 MiB + Duration: 300.0 s + Sampling frequency: 30000.0 Hz + Number of channels: 1 + + +Now let’s add some low-frequency sinusoidal components to simulate LFP +signals + +.. code:: ipython3 + + # Add low-frequency sinusoids with different frequencies and phases per channel + np.random.seed(2305) + num_channels = recording.get_num_channels() + lfp_signals = np.zeros((recording.get_num_samples(), recording.get_num_channels())) + time_vector = recording.get_times() + + for ch in range(num_channels): + # Add multiple frequency components (theta, alpha, beta ranges) + # Theta-like: 4-8 Hz + freq_theta = 4 + np.random.rand() * 4 + phase_theta = np.random.rand() * 2 * np.pi + amp_theta = 50 + np.random.rand() * 50 + + # Alpha-like: 8-12 Hz + freq_alpha = 8 + np.random.rand() * 4 + phase_alpha = np.random.rand() * 2 * np.pi + amp_alpha = 30 + np.random.rand() * 30 + + # Beta-like: 12-30 Hz + freq_beta = 12 + np.random.rand() * 18 + phase_beta = np.random.rand() * 2 * np.pi + amp_beta = 20 + np.random.rand() * 20 + + lfp_signals[:, ch] = ( + amp_theta * np.sin(2 * np.pi * freq_theta * time_vector + phase_theta) + + amp_alpha * np.sin(2 * np.pi * freq_alpha * time_vector + phase_alpha) + + amp_beta * np.sin(2 * np.pi * freq_beta * time_vector + phase_beta) + ) + + # Create a recording with the added LFP signals + recording_lfp = si.NumpyRecording(traces_list=[lfp_signals], sampling_frequency=recording.sampling_frequency, + channel_ids=recording.channel_ids) + recording_with_lfp = recording + recording_lfp + + print("Added low-frequency components to simulate LFP signals") + + +.. parsed-literal:: + + Added low-frequency components to simulate LFP signals + + +Let’s visualize a short segment of the signal + +.. code:: ipython3 + + sw.plot_traces(recording_with_lfp, time_range=[0, 3]) + + + + +.. parsed-literal:: + + + + + + +.. image:: extract_lfps_files/extract_lfps_8_1.png + + +2. Filtering with low cutoff frequencies: the problem +----------------------------------------------------- + +Now let’s try to extract LFPs using a bandpass filter with a low +highpass cutoff (1 Hz). This will demonstrate a common issue. + +.. code:: ipython3 + + # Try to filter with 1 Hz highpass + try: + recording_lfp_1hz = spre.bandpass_filter(recording_with_lfp, freq_min=1.0, freq_max=300.0) + print("Filtering succeeded!") + except Exception as e: + print(f"Error message:\n{str(e)}") + + +.. parsed-literal:: + + Error message: + The freq_min (1.0 Hz) is too low and may cause artifacts during chunk processing. You can set 'ignore_low_freq_error=True' to bypass this error, but make sure you understand the implications. It is recommended to use large chunks when processing/saving your filtered recording to minimize IO overhead.Refer to this documentation on LFP filtering and chunking artifacts for more details: https://spikeinterface.readthedocs.io/en/stable/how-to/extracting_lfps.html. + + +**Why does this fail?** + +The error occurs because by default in SpikeInterface when highpass +filtering below 100 Hz. Filters with very low cutoff frequencies have +long impulse responses, which require larger margins to avoid edge +artifacts between chunks. + +The filter length (and required margin) scales inversely with the +highpass frequency. A 1 Hz highpass filter requires a margin of several +seconds, while a 300 Hz highpass (for spike extraction) only needs a few +milliseconds. + +3. Understanding chunking and margins +------------------------------------- + +SpikeInterface processes recordings in chunks to handle large datasets +efficiently. Each chunk needs a “margin” (extra samples at the edges) to +avoid edge artifacts when filtering. Let’s demonstrate this by saving +the filtered data with different chunking strategies. + +**This error is to inform the user that extra care should be used when +dealing with LFP signals!** + +We can ignore this error, but let’s make sure we understand what it’s +happening. + +.. code:: ipython3 + + # We can ignore this error, but let's see what is happening + recording_filt = spre.bandpass_filter(recording_with_lfp, freq_min=1.0, freq_max=300.0, ignore_low_freq_error=True) + +When retrieving traces, extra samples will be retrieved at the left and +right edges. By default, the filter function will set a margin to 5x the +sampling period associated to ``freq_min``. So for a 1 Hz cutoff +frequency, the margin will be 5 seconds! + +.. code:: ipython3 + + margin_in_s = recording_filt.margin_samples / recording_lfp.sampling_frequency + print(f"Margin: {margin_in_s} s") + + +.. parsed-literal:: + + Margin: 5.0 s + + +This effectively means that if we plot 1-s snippet of traces, a total of +11 s will actually be read and filtered. Note that the margin can be +overridden with the ``margin_ms`` argument, but we do not recommend +changing it. + +.. code:: ipython3 + + sw.plot_traces(recording_filt, time_range=[20, 21]) + + +.. parsed-literal:: + + /home/alessio/Documents/Codes/spike_sorting/spikeinterface/spikeinterface/src/spikeinterface/preprocessing/filter.py:169: UserWarning: The margin size (150000 samples) is more than 20% of the chunk size 30000 samples. This may lead to performance bottlenecks when chunking. Consider increasing the chunk size to minimize margin overhead. + warnings.warn( + + + + +.. parsed-literal:: + + + + + + +.. image:: extract_lfps_files/extract_lfps_17_2.png + + +A warning tells us that what we are doing is not optimized, since in +order to get the requested traces the marging “overhead” is very large. + +If we ask or plot longer snippets, the warning is not displayed. + +.. code:: ipython3 + + sw.plot_traces(recording_filt, time_range=[20, 80]) + + + + +.. parsed-literal:: + + + + + + +.. image:: extract_lfps_files/extract_lfps_19_1.png + + +4. Quantification and visualization the artifacts +------------------------------------------------- + +Let’s extract the traces and visualize the differences between chunking +strategies. We’ll focus on the chunk boundaries where artifacts appear. + +.. code:: ipython3 + + margins_ms = [100, 1000, 5000] + chunk_durations = ["1s", "10s", "30s"] + +The best we can do is to save the full recording in one chunk. This will +cause no artifacts and chunking effects, but in practice it’s not +possible due to the duration and number of channels of most setups. + +Since in this toy case we have a single channel 5-min recording, we can +use this as “optimal”. + +.. code:: ipython3 + + recording_optimal = recording_filt.save(format="memory", chunk_duration="1000s") + + + +.. parsed-literal:: + + write_memory_recording (no parallelization): 0%| | 0/1 [00:00SharedMemoryRecording: 1 channels - 30.0kHz - 1 segments - 9,000,000 samples - 300.00s (5.00 minutes) - float32 dtype - 34.33 MiB
Channel IDs
    ['0']
Annotations
  • is_filtered : True
Properties
    + + + +Now we can do the same with our various options: + +.. code:: ipython3 + + recordings_chunked = {} + + for margin_ms in margins_ms: + for chunk_duration in chunk_durations: + print(f"Margin ms: {margin_ms} - Chunk duration: {chunk_duration}") + t_start = time.perf_counter() + recording_chunk = spre.bandpass_filter( + recording_with_lfp, + freq_min=1.0, + freq_max=300.0, + margin_ms=margin_ms, + ignore_low_freq_error=True + ) + recording_chunk = recording_chunk.save( + format="memory", + chunk_duration=chunk_duration, + verbose=False, + ) + t_stop = time.perf_counter() + result_dict = { + "recording": recording_chunk, + "time": t_stop - t_start + } + recordings_chunked[(margin_ms, chunk_duration)] = result_dict + + +.. parsed-literal:: + + Margin ms: 100 - Chunk duration: 1s + + +.. parsed-literal:: + + /home/alessio/Documents/Codes/spike_sorting/spikeinterface/spikeinterface/src/spikeinterface/preprocessing/filter.py:453: UserWarning: The provided margin_ms (100 ms) is smaller than the recommended margin for the given freq_min (1.0 Hz). This may lead to artifacts at the edges of chunks during processing. Consider increasing the margin_ms to at least 5000.0 ms. + warnings.warn( + + + +.. parsed-literal:: + + write_memory_recording (no parallelization): 0%| | 0/300 [00:00 + + + + +.. image:: extract_lfps_files/extract_lfps_28_2.png + + +For smaller chunk sizes, these artifact will happen more often. In +addition, the margin “overhead” will make processing slower. Let’s +quantify these concepts by computing the overall absolute error with +respect to the optimal case and processing time. + +.. code:: ipython3 + + trace_plotted = False + traces_optimal = recording_optimal.get_traces() + data = {"margin": [], "chunk": [], "error": [], "time": []} + for recording_key, recording_dict in recordings_chunked.items(): + recording_chunk = recording_dict["recording"] + time = recording_dict["time"] + margin, chunk = recording_key + traces_chunk = recording_chunk.get_traces() + error = np.sum(np.abs(traces_optimal - traces_chunk)) + data["margin"].append(margin) + data["chunk"].append(chunk) + data["error"].append(error) + data["time"].append(time) + + df = pd.DataFrame(data=data) + +.. code:: ipython3 + + fig, axs = plt.subplots(ncols=2, figsize=(10, 5)) + sns.barplot(data=data, x="margin", y="error", hue="chunk", ax=axs[0]) + axs[0].set_yscale("log") + sns.barplot(data=data, x="margin", y="time", hue="chunk", ax=axs[1]) + axs[0].set_title("Error VS margin x chunk size") + axs[1].set_title("Processing time VS margin x chunk size") + + + sns.despine(fig) + + + +.. image:: extract_lfps_files/extract_lfps_31_0.png + + +4. Summary +---------- + +1. **Low-frequency filters require special care**: Filters with low + cutoff frequencies (< 10 Hz) have long impulse responses that require + large margins to avoid edge artifacts. + +2. **Chunking artifacts are real**: When processing data in chunks, + insufficient margins lead to visible discontinuities and errors at + chunk boundaries. + +3. **The solution: large chunks and large margins**: For LFP extraction + (1-300 Hz), use: + + - Chunk size: 30-60 seconds + - Margin size: 5 seconds (for 1 Hz highpass) (**use defaults!**) + - This is less memory-efficient but more accurate + +4. **Downsample after filtering**: After bandpass filtering, downsample + to reduce data size (e.g., to 1-2.5 kHz for 300 Hz max frequency). + +5. **Trade-offs**: There’s always a trade-off between computational + efficiency (smaller chunks, less memory) and accuracy (larger chunks, + fewer artifacts). For LFP analysis, accuracy should take priority. + +**When processing your own data:** - If you have memory constraints, use +the largest chunk size your system can handle - Always verify your +filtering parameters on a small test segment first - Consider the lowest +frequency component you want to preserve when setting margins - Save the +processed LFP data to disk to avoid recomputing diff --git a/doc/how_to/extract_lfps_files/extract_lfps_17_2.png b/doc/how_to/extract_lfps_files/extract_lfps_17_2.png new file mode 100644 index 0000000000000000000000000000000000000000..6af871db7c83feac120b2e6a966e1703ac6928ea GIT binary patch literal 29067 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≧wPdZ6Fy{A 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 LZ7uT5+z^2|MD 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 literal 0 HcmV?d00001 diff --git a/doc/how_to/extract_lfps_files/extract_lfps_28_2.png b/doc/how_to/extract_lfps_files/extract_lfps_28_2.png new file mode 100644 index 0000000000000000000000000000000000000000..c637f91d60c3e59346ce8a5a645659cf20a7d950 GIT binary patch literal 75077 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 literal 0 HcmV?d00001 diff --git a/doc/how_to/extract_lfps_files/extract_lfps_8_1.png b/doc/how_to/extract_lfps_files/extract_lfps_8_1.png new file mode 100644 index 0000000000000000000000000000000000000000..aeecc0d4825b14088779bc20d467bbf6947a3163 GIT binary patch literal 25985 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 OimsL+tw6&r_&)&3Gy)+2 literal 0 HcmV?d00001 diff --git a/examples/how_to/extract_lfps.py b/examples/how_to/extract_lfps.py new file mode 100644 index 0000000000..a8a952d59a --- /dev/null +++ b/examples/how_to/extract_lfps.py @@ -0,0 +1,310 @@ +# --- +# jupyter: +# jupytext: +# cell_metadata_filter: -all +# formats: ipynb,py:percent +# text_representation: +# extension: .py +# format_name: percent +# format_version: '1.3' +# jupytext_version: 1.18.1 +# kernelspec: +# display_name: Python 3 (ipykernel) +# language: python +# name: python3 +# --- + +# %% [markdown] +# # Extract LFPs +# +# ### Understanding filtering artifacts and chunking when extracting LFPs +# +# Local Field Potentials (LFPs) are low-frequency signals (<300 Hz) that reflect the summed activity of many neurons. +# Extracting LFPs from high-sampling-rate recordings requires bandpass filtering, but this can introduce artifacts +# when not done carefully, especially when data is processed in chunks (for memory efficiency). +# +# This tutorial demonstrates: +# 1. How to generate simulated LFP data +# 2. Common pitfalls when filtering with low cutoff frequencies +# 3. How chunking and margins affect filtering artifacts +# 4. Summary +# +# **Key takeaway**: For LFP extraction, use large chunks (30-60s) and large margins (several seconds) to minimize +# edge artifacts, even though this is less memory-efficient. + +# %% +import time +import numpy as np +import matplotlib.pyplot as plt +from pathlib import Path +import pandas as pd +import seaborn as sns + +import spikeinterface as si +import spikeinterface.extractors as se +import spikeinterface.preprocessing as spre +import spikeinterface.widgets as sw +from spikeinterface.core import generate_ground_truth_recording + +# %% +# %matplotlib inline + +# %% [markdown] +# ## 1. Generate simulated recording with low-frequency signals +# +# Let's create a simulated recording and add some low-frequency sinusoids that mimic LFP activity. + +# %% +# Generate a ground truth recording with spikes +# Use a higher sampling rate (30 kHz) to simulate raw neural data +recording, sorting = generate_ground_truth_recording( + durations=[300.0], # 300 s + sampling_frequency=30000.0, + num_channels=1, + num_units=4, + seed=2305, +) + +print(f"Recording: {recording}") +print(f"Duration: {recording.get_total_duration():.1f} s") +print(f"Sampling frequency: {recording.sampling_frequency} Hz") +print(f"Number of channels: {recording.get_num_channels()}") + +# %% [markdown] +# Now let's add some low-frequency sinusoidal components to simulate LFP signals + +# %% +# Add low-frequency sinusoids with different frequencies and phases per channel +np.random.seed(2305) +num_channels = recording.get_num_channels() +lfp_signals = np.zeros((recording.get_num_samples(), recording.get_num_channels())) +time_vector = recording.get_times() + +for ch in range(num_channels): + # Add multiple frequency components (theta, alpha, beta ranges) + # Theta-like: 4-8 Hz + freq_theta = 4 + np.random.rand() * 4 + phase_theta = np.random.rand() * 2 * np.pi + amp_theta = 50 + np.random.rand() * 50 + + # Alpha-like: 8-12 Hz + freq_alpha = 8 + np.random.rand() * 4 + phase_alpha = np.random.rand() * 2 * np.pi + amp_alpha = 30 + np.random.rand() * 30 + + # Beta-like: 12-30 Hz + freq_beta = 12 + np.random.rand() * 18 + phase_beta = np.random.rand() * 2 * np.pi + amp_beta = 20 + np.random.rand() * 20 + + lfp_signals[:, ch] = ( + amp_theta * np.sin(2 * np.pi * freq_theta * time_vector + phase_theta) + + amp_alpha * np.sin(2 * np.pi * freq_alpha * time_vector + phase_alpha) + + amp_beta * np.sin(2 * np.pi * freq_beta * time_vector + phase_beta) + ) + +# Create a recording with the added LFP signals +recording_lfp = si.NumpyRecording(traces_list=[lfp_signals], sampling_frequency=recording.sampling_frequency, + channel_ids=recording.channel_ids) +recording_with_lfp = recording + recording_lfp + +print("Added low-frequency components to simulate LFP signals") + +# %% [markdown] +# Let's visualize a short segment of the signal + +# %% +sw.plot_traces(recording_with_lfp, time_range=[0, 3]) + +# %% [markdown] +# ## 2. Filtering with low cutoff frequencies: the problem +# +# Now let's try to extract LFPs using a bandpass filter with a low highpass cutoff (1 Hz). +# This will demonstrate a common issue. + +# %% +# Try to filter with 1 Hz highpass +try: + recording_lfp_1hz = spre.bandpass_filter(recording_with_lfp, freq_min=1.0, freq_max=300.0) + print("Filtering succeeded!") +except Exception as e: + print(f"Error message:\n{str(e)}") + +# %% [markdown] +# **Why does this fail?** +# +# The error occurs because by default in SpikeInterface when highpass filtering below 100 Hz. +# Filters with very low cutoff frequencies have long impulse responses, which require larger margins to avoid edge artifacts between chunks. +# +# The filter length (and required margin) scales inversely with the highpass frequency. A 1 Hz highpass +# filter requires a margin of several seconds, while a 300 Hz highpass (for spike extraction) only needs +# a few milliseconds. + +# %% [markdown] +# ## 3. Understanding chunking and margins +# +# SpikeInterface processes recordings in chunks to handle large datasets efficiently. Each chunk needs +# a "margin" (extra samples at the edges) to avoid edge artifacts when filtering. Let's demonstrate +# this by saving the filtered data with different chunking strategies. +# +# **This error is to inform the user that extra care should be used when dealing with LFP signals!** +# +# We can ignore this error, but let's make sure we understand what it's happening. + +# %% +# We can ignore this error, but let's see what is happening +recording_filt = spre.bandpass_filter(recording_with_lfp, freq_min=1.0, freq_max=300.0, ignore_low_freq_error=True) + +# %% [markdown] +# When retrieving traces, extra samples will be retrieved at the left and right edges. +# By default, the filter function will set a margin to 5x the sampling period associated to `freq_min`. +# So for a 1 Hz cutoff frequency, the margin will be 5 seconds! + +# %% +margin_in_s = recording_filt.margin_samples / recording_lfp.sampling_frequency +print(f"Margin: {margin_in_s} s") + +# %% [markdown] +# This effectively means that if we plot 1-s snippet of traces, a total of 11 s will actually be read and filtered. Note that the margin can be overridden with the `margin_ms` argument, but we do not recommend changing it. + +# %% +sw.plot_traces(recording_filt, time_range=[20, 21]) + +# %% [markdown] +# A warning tells us that what we are doing is not optimized, since in order to get the requested traces the marging "overhead" is very large. +# +# If we ask or plot longer snippets, the warning is not displayed. + +# %% +sw.plot_traces(recording_filt, time_range=[20, 80]) + +# %% [markdown] +# ## 4. Quantification and visualization the artifacts +# +# Let's extract the traces and visualize the differences between chunking strategies. +# We'll focus on the chunk boundaries where artifacts appear. + +# %% +margins_ms = [100, 1000, 5000] +chunk_durations = ["1s", "10s", "30s"] + +# %% [markdown] +# The best we can do is to save the full recording in one chunk. This will cause no artifacts and chunking effects, but in practice it's not possible due to the duration and number of channels of most setups. +# +# Since in this toy case we have a single channel 5-min recording, we can use this as "optimal". + +# %% +recording_optimal = recording_filt.save(format="memory", chunk_duration="1000s") + +# %% +recording_optimal + +# %% [markdown] +# Now we can do the same with our various options: + +# %% +recordings_chunked = {} + +for margin_ms in margins_ms: + for chunk_duration in chunk_durations: + print(f"Margin ms: {margin_ms} - Chunk duration: {chunk_duration}") + t_start = time.perf_counter() + recording_chunk = spre.bandpass_filter( + recording_with_lfp, + freq_min=1.0, + freq_max=300.0, + margin_ms=margin_ms, + ignore_low_freq_error=True + ) + recording_chunk = recording_chunk.save( + format="memory", + chunk_duration=chunk_duration, + verbose=False, + ) + t_stop = time.perf_counter() + result_dict = { + "recording": recording_chunk, + "time": t_stop - t_start + } + recordings_chunked[(margin_ms, chunk_duration)] = result_dict + +# %% [markdown] +# Let's visualize the error for the "10s" chunks and different margins, centered around 30s (which is a chunk edge): + +# %% +fig, ax = plt.subplots(figsize=(10, 5)) +trace_plotted = False +for recording_key, recording_dict in recordings_chunked.items(): + recording_chunk = recording_dict["recording"] + margin, chunk = recording_key + start_frame = int(25 * recording_optimal.sampling_frequency) + end_frame = int(35 * recording_optimal.sampling_frequency) + traces_opt = recording_optimal.get_traces(start_frame=start_frame, end_frame=end_frame) + if not trace_plotted: + ax.plot(traces_opt, color="grey", label="traces", alpha=0.5) + trace_plotted = True + if chunk != "10s": + continue + diff = recording_optimal - recording_chunk + traces_diff = diff.get_traces(start_frame=start_frame, end_frame=end_frame) + ax.plot(traces_diff, label=recording_key) + +ax.legend() + +# %% [markdown] +# For smaller chunk sizes, these artifact will happen more often. In addition, the margin "overhead" will make processing slower. +# Let's quantify these concepts by computing the overall absolute error with respect to the optimal case and processing time. + +# %% +trace_plotted = False +traces_optimal = recording_optimal.get_traces() +data = {"margin": [], "chunk": [], "error": [], "time": []} +for recording_key, recording_dict in recordings_chunked.items(): + recording_chunk = recording_dict["recording"] + time = recording_dict["time"] + margin, chunk = recording_key + traces_chunk = recording_chunk.get_traces() + error = np.sum(np.abs(traces_optimal - traces_chunk)) + data["margin"].append(margin) + data["chunk"].append(chunk) + data["error"].append(error) + data["time"].append(time) + +df = pd.DataFrame(data=data) + +# %% +fig, axs = plt.subplots(ncols=2, figsize=(10, 5)) +sns.barplot(data=data, x="margin", y="error", hue="chunk", ax=axs[0]) +axs[0].set_yscale("log") +sns.barplot(data=data, x="margin", y="time", hue="chunk", ax=axs[1]) +axs[0].set_title("Error VS margin x chunk size") +axs[1].set_title("Processing time VS margin x chunk size") + + +sns.despine(fig) + +# %% [markdown] +# ## 4. Summary +# +# 1. **Low-frequency filters require special care**: Filters with low cutoff frequencies (< 10 Hz) have long +# impulse responses that require large margins to avoid edge artifacts. +# +# 2. **Chunking artifacts are real**: When processing data in chunks, insufficient margins lead to visible +# discontinuities and errors at chunk boundaries. +# +# 3. **The solution: large chunks and large margins**: For LFP extraction (1-300 Hz), use: +# - Chunk size: 30-60 seconds +# - Margin size: 5 seconds (for 1 Hz highpass) (**use defaults!**) +# - This is less memory-efficient but more accurate +# +# 4. **Downsample after filtering**: After bandpass filtering, downsample to reduce data size (e.g., to 1-2.5 kHz +# for 300 Hz max frequency). +# +# 5. **Trade-offs**: There's always a trade-off between computational efficiency (smaller chunks, less memory) +# and accuracy (larger chunks, fewer artifacts). For LFP analysis, accuracy should take priority. +# +# **When processing your own data:** +# - If you have memory constraints, use the largest chunk size your system can handle +# - Always verify your filtering parameters on a small test segment first +# - Consider the lowest frequency component you want to preserve when setting margins +# - Save the processed LFP data to disk to avoid recomputing diff --git a/src/spikeinterface/core/recording_tools.py b/src/spikeinterface/core/recording_tools.py index fd95b11e6a..992a48c589 100644 --- a/src/spikeinterface/core/recording_tools.py +++ b/src/spikeinterface/core/recording_tools.py @@ -214,13 +214,7 @@ def write_binary_recording_file_handle( def _init_memory_worker(recording, arrays, shm_names, shapes, dtype): # create a local dict per worker worker_ctx = {} - if isinstance(recording, dict): - from spikeinterface.core import load - - worker_ctx["recording"] = load(recording) - else: - worker_ctx["recording"] = recording - + worker_ctx["recording"] = recording worker_ctx["dtype"] = np.dtype(dtype) if arrays is None: diff --git a/src/spikeinterface/preprocessing/filter.py b/src/spikeinterface/preprocessing/filter.py index 38485aff4a..710610f289 100644 --- a/src/spikeinterface/preprocessing/filter.py +++ b/src/spikeinterface/preprocessing/filter.py @@ -1,4 +1,5 @@ from __future__ import annotations +import warnings import numpy as np @@ -8,6 +9,10 @@ from spikeinterface.core import get_chunk_with_margin +HIGHPASS_ERROR_THRESHOLD_HZ = 100 +MARGIN_TO_CHUNK_PERCENT_WARNING = 0.2 # 20% + + _common_filter_docs = """**filter_kwargs : dict Certain keyword arguments for `scipy.signal` filters: filter_order : order @@ -79,7 +84,6 @@ def __init__( ftype="butter", filter_mode="sos", margin_ms=5, - max_margin_s=5, add_reflect_padding=False, coeff=None, dtype=None, @@ -112,6 +116,7 @@ def __init__( self.set_channel_offsets(0) margin = int(margin_ms * fs / 1000.0) + self.margin_samples = margin for parent_segment in recording._recording_segments: self.add_recording_segment( FilterRecordingSegment( @@ -139,22 +144,6 @@ def __init__( direction=direction, ) - def adjust_margin_ms_for_highpass(self, freq_min, max_margin_s): - # compute margin as 3 times the period of the highpass cutoff - margin_ms = 3 * (1000.0 / freq_min) - # limit max margin - max_margin_ms = max_margin_s * 1000.0 - if margin_ms > max_margin_ms: - margin_ms = max_margin_ms - return margin_ms - - def adjust_margin_ms_for_notch(self, max_margin_s, q, f0): - margin_ms = (3 / np.pi) * (q / f0) * 1000.0 - max_margin_ms = max_margin_s * 1000.0 - if margin_ms < max_margin_ms: - margin_ms = max_margin_ms - return margin_ms - class FilterRecordingSegment(BasePreprocessorSegment): def __init__( @@ -176,6 +165,12 @@ def __init__( self.dtype = dtype def get_traces(self, start_frame, end_frame, channel_indices): + if self.margin > MARGIN_TO_CHUNK_PERCENT_WARNING * (end_frame - start_frame): + warnings.warn( + f"The margin size ({self.margin} samples) is more than {int(MARGIN_TO_CHUNK_PERCENT_WARNING * 100)}% " + f"of the chunk size {(end_frame - start_frame)} samples. This may lead to performance bottlenecks when " + f"chunking. Consider increasing the chunk size to minimize margin overhead." + ) traces_chunk, left_margin, right_margin = get_chunk_with_margin( self.parent_recording_segment, start_frame, @@ -241,6 +236,8 @@ class BandpassFilterRecording(FilterRecording): Maximum margin in seconds when margin_ms is set to "auto". dtype : dtype or None The dtype of the returned traces. If None, the dtype of the parent recording is used + ignore_low_freq_error : bool, default: False + If True, does not raise an error if freq_min is too low for the sampling frequency. {} Returns @@ -250,10 +247,18 @@ class BandpassFilterRecording(FilterRecording): """ def __init__( - self, recording, freq_min=300.0, freq_max=6000.0, margin_ms="auto", max_margin_s=5, dtype=None, **filter_kwargs + self, + recording, + freq_min=300.0, + freq_max=6000.0, + margin_ms="auto", + dtype=None, + ignore_low_freq_error=False, + **filter_kwargs, ): if margin_ms == "auto": - margin_ms = self.adjust_margin_ms_for_highpass(freq_min, max_margin_s) + margin_ms = adjust_margin_ms_for_highpass(freq_min) + highpass_check(freq_min, margin_ms, ignore_low_freq_error=ignore_low_freq_error) FilterRecording.__init__( self, recording, band=[freq_min, freq_max], margin_ms=margin_ms, dtype=dtype, **filter_kwargs ) @@ -277,10 +282,10 @@ class HighpassFilterRecording(FilterRecording): margin_ms : float | str, default: "auto" Margin in ms on border to avoid border effect. If "auto", margin is computed as 3 times the filter highpass cutoff period. - max_margin_s : float, default: 5 - Maximum margin in seconds when margin_ms is set to "auto". dtype : dtype or None The dtype of the returned traces. If None, the dtype of the parent recording is used + ignore_low_freq_error : bool, default: False + If True, does not raise an error if freq_min is too low for the sampling frequency. {} Returns @@ -289,9 +294,12 @@ class HighpassFilterRecording(FilterRecording): The highpass-filtered recording extractor object """ - def __init__(self, recording, freq_min=300.0, margin_ms="auto", max_margin_s=5, dtype=None, **filter_kwargs): + def __init__( + self, recording, freq_min=300.0, margin_ms="auto", dtype=None, ignore_low_freq_error=False, **filter_kwargs + ): if margin_ms == "auto": - margin_ms = self.adjust_margin_ms_for_highpass(freq_min, max_margin_s) + margin_ms = adjust_margin_ms_for_highpass(freq_min) + highpass_check(freq_min, margin_ms, ignore_low_freq_error=ignore_low_freq_error) FilterRecording.__init__( self, recording, band=freq_min, margin_ms=margin_ms, dtype=dtype, btype="highpass", **filter_kwargs ) @@ -426,6 +434,38 @@ def causal_filter( highpass_filter.__doc__ = highpass_filter.__doc__.format(_common_filter_docs) +def adjust_margin_ms_for_highpass(freq_min, multiplier=5): + margin_ms = multiplier * (1000.0 / freq_min) + return margin_ms + + +def adjust_margin_ms_for_notch(q, f0, multiplier=5): + margin_ms = (multiplier / np.pi) * (q / f0) * 1000.0 + return margin_ms + + +def highpass_check(freq_min, margin_ms, ignore_low_freq_error=False): + if freq_min < HIGHPASS_ERROR_THRESHOLD_HZ: + if not ignore_low_freq_error: + raise ValueError( + f"The freq_min ({freq_min} Hz) is too low and may cause artifacts during chunk processing. " + f"You can set 'ignore_low_freq_error=True' to bypass this error, but make sure you understand the implications. " + f"It is recommended to use large chunks when processing/saving your filtered recording to minimize IO overhead." + f"Refer to this documentation on LFP filtering and chunking artifacts for more details: " + f"https://spikeinterface.readthedocs.io/en/latest/how-to/extract_lfps.html. " + ) + if margin_ms == "auto": + margin_ms = adjust_margin_ms_for_highpass(freq_min) + else: + auto_margin_ms = adjust_margin_ms_for_highpass(freq_min) + if margin_ms < auto_margin_ms: + warnings.warn( + f"The provided margin_ms ({margin_ms} ms) is smaller than the recommended margin for the given freq_min ({freq_min} Hz). " + f"This may lead to artifacts at the edges of chunks during processing. " + f"Consider increasing the margin_ms to at least {auto_margin_ms} ms." + ) + + def fix_dtype(recording, dtype): """ Fix recording dtype for preprocessing, by always returning a numpy.dtype. From d08c378dea7dd957db5bbfbdeb65afedea56965d Mon Sep 17 00:00:00 2001 From: Alessio Buccino Date: Fri, 5 Dec 2025 13:06:51 +0100 Subject: [PATCH 05/19] Add new how-to to index --- doc/how_to/index.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/how_to/index.rst b/doc/how_to/index.rst index 2d490c207d..0f59ed5114 100644 --- a/doc/how_to/index.rst +++ b/doc/how_to/index.rst @@ -10,6 +10,7 @@ Guides on how to solve specific, short problems in SpikeInterface. Learn how to. customize_a_plot combine_recordings process_by_channel_group + extract_lfps build_pipeline_with_dicts physical_units unsigned_to_signed From 79e4469140068a755b6fdc2c9d1fa7d1895451f4 Mon Sep 17 00:00:00 2001 From: Alessio Buccino Date: Fri, 5 Dec 2025 14:07:12 +0100 Subject: [PATCH 06/19] Fix notch --- src/spikeinterface/preprocessing/filter.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/spikeinterface/preprocessing/filter.py b/src/spikeinterface/preprocessing/filter.py index 710610f289..4ee7347962 100644 --- a/src/spikeinterface/preprocessing/filter.py +++ b/src/spikeinterface/preprocessing/filter.py @@ -335,7 +335,7 @@ def __init__(self, recording, freq=3000, q=30, margin_ms="auto", max_margin_s=5, import scipy.signal if margin_ms == "auto": - margin_ms = self.adjust_margin_ms_for_notch(max_margin_s, q, freq) + margin_ms = adjust_margin_ms_for_notch(q, freq) fn = 0.5 * float(recording.get_sampling_frequency()) coeff = scipy.signal.iirnotch(freq / fn, q) From c1e80f38126687e188a0c393d53c94664ea21ce4 Mon Sep 17 00:00:00 2001 From: Alessio Buccino Date: Tue, 9 Dec 2025 12:08:46 +0100 Subject: [PATCH 07/19] Move how-to in gallery and fox ibl export tests --- doc/conf.py | 6 +- doc/forhowto/forhowto_jupyter.zip | Bin 0 -> 24771 bytes doc/forhowto/forhowto_python.zip | Bin 0 -> 18570 bytes .../images/sphx_glr_plot_extract_lfps_001.png | Bin 0 -> 27316 bytes .../images/sphx_glr_plot_extract_lfps_002.png | Bin 0 -> 30481 bytes .../images/sphx_glr_plot_extract_lfps_003.png | Bin 0 -> 20875 bytes .../images/sphx_glr_plot_extract_lfps_004.png | Bin 0 -> 69160 bytes .../images/sphx_glr_plot_extract_lfps_005.png | Bin 0 -> 27413 bytes ...phx_glr_plot_working_with_tetrodes_001.png | Bin 0 -> 18554 bytes ...phx_glr_plot_working_with_tetrodes_002.png | Bin 0 -> 41202 bytes .../sphx_glr_plot_extract_lfps_thumb.png | Bin 0 -> 23684 bytes ...x_glr_plot_working_with_tetrodes_thumb.png | Bin 0 -> 15759 bytes doc/forhowto/index.rst | 81 + doc/forhowto/plot_extract_lfps.codeobj.json | 2637 +++++++++++++++++ doc/forhowto/plot_extract_lfps.ipynb | 316 ++ .../forhowto/plot_extract_lfps.py | 247 +- doc/forhowto/plot_extract_lfps.py.md5 | 1 + doc/forhowto/plot_extract_lfps.rst | 640 ++++ doc/forhowto/plot_extract_lfps.zip | Bin 0 -> 30149 bytes .../plot_working_with_tetrodes.codeobj.json | 743 +++++ doc/forhowto/plot_working_with_tetrodes.ipynb | 194 ++ .../forhowto/plot_working_with_tetrodes.py | 0 .../plot_working_with_tetrodes.py.md5 | 1 + doc/forhowto/plot_working_with_tetrodes.rst | 319 ++ doc/forhowto/plot_working_with_tetrodes.zip | Bin 0 -> 13192 bytes doc/how_to/index.rst | 4 +- examples/{tutorials => }/forhowto/README.rst | 0 examples/forhowto/plot_extract_lfps.py | 313 ++ .../forhowto/plot_working_with_tetrodes.py | 117 + .../exporters/tests/test_export_to_ibl.py | 2 +- src/spikeinterface/preprocessing/filter.py | 6 +- 31 files changed, 5494 insertions(+), 133 deletions(-) create mode 100644 doc/forhowto/forhowto_jupyter.zip create mode 100644 doc/forhowto/forhowto_python.zip create mode 100644 doc/forhowto/images/sphx_glr_plot_extract_lfps_001.png create mode 100644 doc/forhowto/images/sphx_glr_plot_extract_lfps_002.png create mode 100644 doc/forhowto/images/sphx_glr_plot_extract_lfps_003.png create mode 100644 doc/forhowto/images/sphx_glr_plot_extract_lfps_004.png create mode 100644 doc/forhowto/images/sphx_glr_plot_extract_lfps_005.png create mode 100644 doc/forhowto/images/sphx_glr_plot_working_with_tetrodes_001.png create mode 100644 doc/forhowto/images/sphx_glr_plot_working_with_tetrodes_002.png create mode 100644 doc/forhowto/images/thumb/sphx_glr_plot_extract_lfps_thumb.png create mode 100644 doc/forhowto/images/thumb/sphx_glr_plot_working_with_tetrodes_thumb.png create mode 100644 doc/forhowto/index.rst create mode 100644 doc/forhowto/plot_extract_lfps.codeobj.json create mode 100644 doc/forhowto/plot_extract_lfps.ipynb rename examples/how_to/extract_lfps.py => doc/forhowto/plot_extract_lfps.py (54%) create mode 100644 doc/forhowto/plot_extract_lfps.py.md5 create mode 100644 doc/forhowto/plot_extract_lfps.rst create mode 100644 doc/forhowto/plot_extract_lfps.zip create mode 100644 doc/forhowto/plot_working_with_tetrodes.codeobj.json create mode 100644 doc/forhowto/plot_working_with_tetrodes.ipynb rename examples/tutorials/forhowto/plot_1_working_with_tetrodes.py => doc/forhowto/plot_working_with_tetrodes.py (100%) create mode 100644 doc/forhowto/plot_working_with_tetrodes.py.md5 create mode 100644 doc/forhowto/plot_working_with_tetrodes.rst create mode 100644 doc/forhowto/plot_working_with_tetrodes.zip rename examples/{tutorials => }/forhowto/README.rst (100%) create mode 100644 examples/forhowto/plot_extract_lfps.py create mode 100644 examples/forhowto/plot_working_with_tetrodes.py diff --git a/doc/conf.py b/doc/conf.py index 4f9b60a926..6a50bf634d 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -123,8 +123,8 @@ # This is the default but including here explicitly. Should build all docs and fail on gallery failures only. # other option would be abort_on_example_error, but this fails on first failure. So we decided against this. 'only_warn_on_example_error': False, - 'examples_dirs': ['../examples/tutorials'], - 'gallery_dirs': ['tutorials' ], # path where to save gallery generated examples + 'examples_dirs': ['../examples/tutorials', '../examples/forhowto'], + 'gallery_dirs': ['tutorials', 'forhowto'], # path where to save gallery generated examples 'subsection_order': ExplicitOrder([ '../examples/tutorials/core', '../examples/tutorials/extractors', @@ -132,7 +132,7 @@ '../examples/tutorials/qualitymetrics', '../examples/tutorials/comparison', '../examples/tutorials/widgets', - '../examples/tutorials/forhowto', + '../examples/forhowto', ]), 'within_subsection_order': FileNameSortKey, 'ignore_pattern': '/generate_*', diff --git a/doc/forhowto/forhowto_jupyter.zip b/doc/forhowto/forhowto_jupyter.zip new file mode 100644 index 0000000000000000000000000000000000000000..0b5b72a00dcc73bb2e7d01e9e6c4fdb83805d805 GIT binary patch literal 24771 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 literal 0 HcmV?d00001 diff --git a/doc/forhowto/forhowto_python.zip b/doc/forhowto/forhowto_python.zip new file mode 100644 index 0000000000000000000000000000000000000000..565bd3c131520f941ef15eeff640390ccabede07 GIT binary patch literal 18570 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 literal 0 HcmV?d00001 diff --git a/doc/forhowto/images/sphx_glr_plot_extract_lfps_002.png b/doc/forhowto/images/sphx_glr_plot_extract_lfps_002.png new file mode 100644 index 0000000000000000000000000000000000000000..61a76d69ae0eed0eda4bf493e52b5ee10ab75451 GIT binary patch literal 30481 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 U^36;YQSd*_{W|-esG48-UqjaE-2eap literal 0 HcmV?d00001 diff --git a/doc/forhowto/images/sphx_glr_plot_extract_lfps_005.png b/doc/forhowto/images/sphx_glr_plot_extract_lfps_005.png new file mode 100644 index 0000000000000000000000000000000000000000..ece26c77fb7db1c33c64c3d71bec142738d35a45 GIT binary patch literal 27413 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 literal 0 HcmV?d00001 diff --git a/doc/forhowto/images/sphx_glr_plot_working_with_tetrodes_002.png b/doc/forhowto/images/sphx_glr_plot_working_with_tetrodes_002.png new file mode 100644 index 0000000000000000000000000000000000000000..bff0a6fb886c1c830b3af3ad2c2844b5a8e47e5a GIT binary patch literal 41202 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 wvk{vZzYh)m5%}+4|Bp8@{O$kV@-wa@2{ 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 bM-&_LK0QtUFdT5u8bLuuS-MKn_~U;AdXtVO literal 0 HcmV?d00001 diff --git a/doc/forhowto/index.rst b/doc/forhowto/index.rst new file mode 100644 index 0000000000..0b92242996 --- /dev/null +++ b/doc/forhowto/index.rst @@ -0,0 +1,81 @@ +:orphan: + +For how to +---------- + +These documents are files which we would like sphinx-gallery to run, but are linked by the how to guide. + + + +.. raw:: html + +

    + + +.. toctree:: + :hidden: + + /forhowto/plot_extract_lfps + /forhowto/plot_working_with_tetrodes + + +.. only:: html + + .. container:: sphx-glr-footer sphx-glr-footer-gallery + + .. container:: sphx-glr-download sphx-glr-download-python + + :download:`Download all examples in Python source code: forhowto_python.zip ` + + .. container:: sphx-glr-download sphx-glr-download-jupyter + + :download:`Download all examples in Jupyter notebooks: forhowto_jupyter.zip ` + + +.. only:: html + + .. rst-class:: sphx-glr-signature + + `Gallery generated by Sphinx-Gallery `_ diff --git a/doc/forhowto/plot_extract_lfps.codeobj.json b/doc/forhowto/plot_extract_lfps.codeobj.json new file mode 100644 index 0000000000..ae763dc01b --- /dev/null +++ b/doc/forhowto/plot_extract_lfps.codeobj.json @@ -0,0 +1,2637 @@ +{ + "_": [ + { + "is_class": false, + "is_explicit": false, + "module": "matplotlib.legend", + "module_short": "matplotlib.legend", + "name": "Legend" + }, + { + "is_class": false, + "is_explicit": false, + "module": "matplotlib", + "module_short": "matplotlib", + "name": "Legend" + } + ], + "amp_alpha": [ + { + "is_class": false, + "is_explicit": false, + "module": "builtins", + "module_short": "builtins", + "name": "float" + } + ], + "amp_beta": [ + { + "is_class": false, + "is_explicit": false, + "module": "builtins", + "module_short": "builtins", + "name": "float" + } + ], + "amp_theta": [ + { + "is_class": false, + "is_explicit": false, + "module": "builtins", + "module_short": "builtins", + "name": "float" + } + ], + "ax": [ + { + "is_class": false, + "is_explicit": false, + "module": "matplotlib.axes._axes", + "module_short": "matplotlib.axes", + "name": "Axes" + }, + { + "is_class": false, + "is_explicit": false, + "module": "matplotlib.axes", + "module_short": "matplotlib.axes", + "name": "Axes" + }, + { + "is_class": false, + "is_explicit": false, + "module": "matplotlib", + "module_short": "matplotlib", + "name": "Axes" + } + ], + "ax.axvline": [ + { + "is_class": false, + "is_explicit": false, + "module": "matplotlib.axes._axes", + "module_short": "matplotlib.axes", + "name": "Axes.axvline" + }, + { + "is_class": false, + "is_explicit": false, + "module": "matplotlib.axes", + "module_short": "matplotlib.axes", + "name": "Axes.axvline" + }, + { + "is_class": false, + "is_explicit": false, + "module": "matplotlib", + "module_short": "matplotlib", + "name": "Axes.axvline" + }, + { + "is_class": false, + "is_explicit": false, + "module": "matplotlib.axes._base", + "module_short": "matplotlib.axes._base", + "name": "_AxesBase.axvline" + }, + { + "is_class": false, + "is_explicit": false, + "module": "matplotlib.axes", + "module_short": "matplotlib.axes", + "name": "_AxesBase.axvline" + }, + { + "is_class": false, + "is_explicit": false, + "module": "matplotlib", + "module_short": "matplotlib", + "name": "_AxesBase.axvline" + }, + { + "is_class": false, + "is_explicit": false, + "module": "matplotlib.artist", + "module_short": "matplotlib.artist", + "name": "Artist.axvline" + }, + { + "is_class": false, + "is_explicit": false, + "module": "matplotlib", + "module_short": "matplotlib", + "name": "Artist.axvline" + } + ], + "ax.legend": [ + { + "is_class": false, + "is_explicit": false, + "module": "matplotlib.axes._axes", + "module_short": "matplotlib.axes", + "name": "Axes.legend" + }, + { + "is_class": false, + "is_explicit": false, + "module": "matplotlib.axes", + "module_short": "matplotlib.axes", + "name": "Axes.legend" + }, + { + "is_class": false, + "is_explicit": false, + "module": "matplotlib", + "module_short": "matplotlib", + "name": "Axes.legend" + }, + { + "is_class": false, + "is_explicit": false, + "module": "matplotlib.axes._base", + "module_short": "matplotlib.axes._base", + "name": "_AxesBase.legend" + }, + { + "is_class": false, + "is_explicit": false, + "module": "matplotlib.axes", + "module_short": "matplotlib.axes", + "name": "_AxesBase.legend" + }, + { + "is_class": false, + "is_explicit": false, + "module": "matplotlib", + "module_short": "matplotlib", + "name": "_AxesBase.legend" + }, + { + "is_class": false, + "is_explicit": false, + "module": "matplotlib.artist", + "module_short": "matplotlib.artist", + "name": "Artist.legend" + }, + { + "is_class": false, + "is_explicit": false, + "module": "matplotlib", + "module_short": "matplotlib", + "name": "Artist.legend" + } + ], + "ax.plot": [ + { + "is_class": false, + "is_explicit": false, + "module": "matplotlib.axes._axes", + "module_short": "matplotlib.axes", + "name": "Axes.plot" + }, + { + "is_class": false, + "is_explicit": false, + "module": "matplotlib.axes", + "module_short": "matplotlib.axes", + "name": "Axes.plot" + }, + { + "is_class": false, + "is_explicit": false, + "module": "matplotlib", + "module_short": "matplotlib", + "name": "Axes.plot" + }, + { + "is_class": false, + "is_explicit": false, + "module": "matplotlib.axes._base", + "module_short": "matplotlib.axes._base", + "name": "_AxesBase.plot" + }, + { + "is_class": false, + "is_explicit": false, + "module": "matplotlib.axes", + "module_short": "matplotlib.axes", + "name": "_AxesBase.plot" + }, + { + "is_class": false, + "is_explicit": false, + "module": "matplotlib", + "module_short": "matplotlib", + "name": "_AxesBase.plot" + }, + { + "is_class": false, + "is_explicit": false, + "module": "matplotlib.artist", + "module_short": "matplotlib.artist", + "name": "Artist.plot" + }, + { + "is_class": false, + "is_explicit": false, + "module": "matplotlib", + "module_short": "matplotlib", + "name": "Artist.plot" + } + ], + "ax.set_xlabel": [ + { + "is_class": false, + "is_explicit": false, + "module": "matplotlib.axes._axes", + "module_short": "matplotlib.axes", + "name": "Axes.set_xlabel" + }, + { + "is_class": false, + "is_explicit": false, + "module": "matplotlib.axes", + "module_short": "matplotlib.axes", + "name": "Axes.set_xlabel" + }, + { + "is_class": false, + "is_explicit": false, + "module": "matplotlib", + "module_short": "matplotlib", + "name": "Axes.set_xlabel" + }, + { + "is_class": false, + "is_explicit": false, + "module": "matplotlib.axes._base", + "module_short": "matplotlib.axes._base", + "name": "_AxesBase.set_xlabel" + }, + { + "is_class": false, + "is_explicit": false, + "module": "matplotlib.axes", + "module_short": "matplotlib.axes", + "name": "_AxesBase.set_xlabel" + }, + { + "is_class": false, + "is_explicit": false, + "module": "matplotlib", + "module_short": "matplotlib", + "name": "_AxesBase.set_xlabel" + }, + { + "is_class": false, + "is_explicit": false, + "module": "matplotlib.artist", + "module_short": "matplotlib.artist", + "name": "Artist.set_xlabel" + }, + { + "is_class": false, + "is_explicit": false, + "module": "matplotlib", + "module_short": "matplotlib", + "name": "Artist.set_xlabel" + } + ], + "ax.set_ylabel": [ + { + "is_class": false, + "is_explicit": false, + "module": "matplotlib.axes._axes", + "module_short": "matplotlib.axes", + "name": "Axes.set_ylabel" + }, + { + "is_class": false, + "is_explicit": false, + "module": "matplotlib.axes", + "module_short": "matplotlib.axes", + "name": "Axes.set_ylabel" + }, + { + "is_class": false, + "is_explicit": false, + "module": "matplotlib", + "module_short": "matplotlib", + "name": "Axes.set_ylabel" + }, + { + "is_class": false, + "is_explicit": false, + "module": "matplotlib.axes._base", + "module_short": "matplotlib.axes._base", + "name": "_AxesBase.set_ylabel" + }, + { + "is_class": false, + "is_explicit": false, + "module": "matplotlib.axes", + "module_short": "matplotlib.axes", + "name": "_AxesBase.set_ylabel" + }, + { + "is_class": false, + "is_explicit": false, + "module": "matplotlib", + "module_short": "matplotlib", + "name": "_AxesBase.set_ylabel" + }, + { + "is_class": false, + "is_explicit": false, + "module": "matplotlib.artist", + "module_short": "matplotlib.artist", + "name": "Artist.set_ylabel" + }, + { + "is_class": false, + "is_explicit": false, + "module": "matplotlib", + "module_short": "matplotlib", + "name": "Artist.set_ylabel" + } + ], + "axs": [ + { + "is_class": false, + "is_explicit": false, + "module": "numpy", + "module_short": "numpy", + "name": "ndarray" + } + ], + "ch": [ + { + "is_class": false, + "is_explicit": false, + "module": "builtins", + "module_short": "builtins", + "name": "int" + } + ], + "chunk": [ + { + "is_class": false, + "is_explicit": false, + "module": "builtins", + "module_short": "builtins", + "name": "str" + } + ], + "chunk_duration": [ + { + "is_class": false, + "is_explicit": false, + "module": "builtins", + "module_short": "builtins", + "name": "str" + } + ], + "chunk_durations": [ + { + "is_class": false, + "is_explicit": false, + "module": "builtins", + "module_short": "builtins", + "name": "list" + } + ], + "data": [ + { + "is_class": false, + "is_explicit": false, + "module": "builtins", + "module_short": "builtins", + "name": "dict" + } + ], + "df": [ + { + "is_class": false, + "is_explicit": false, + "module": "pandas.core.frame", + "module_short": "pandas.core.frame", + "name": "DataFrame" + }, + { + "is_class": false, + "is_explicit": false, + "module": "pandas.core", + "module_short": "pandas.core", + "name": "DataFrame" + }, + { + "is_class": false, + "is_explicit": false, + "module": "pandas", + "module_short": "pandas", + "name": "DataFrame" + } + ], + "diff": [ + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core.operatorrecordings", + "module_short": "spikeinterface.core.operatorrecordings", + "name": "SubtractRecordings" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core", + "module_short": "spikeinterface.core", + "name": "SubtractRecordings" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "SubtractRecordings" + } + ], + "diff.get_traces": [ + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core.operatorrecordings", + "module_short": "spikeinterface.core.operatorrecordings", + "name": "SubtractRecordings.get_traces" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core", + "module_short": "spikeinterface.core", + "name": "SubtractRecordings.get_traces" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "SubtractRecordings.get_traces" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core.operatorrecordings", + "module_short": "spikeinterface.core.operatorrecordings", + "name": "BaseOperatorRecording.get_traces" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core", + "module_short": "spikeinterface.core", + "name": "BaseOperatorRecording.get_traces" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "BaseOperatorRecording.get_traces" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core.baserecording", + "module_short": "spikeinterface", + "name": "BaseRecording.get_traces" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core", + "module_short": "spikeinterface", + "name": "BaseRecording.get_traces" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "BaseRecording.get_traces" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core.baserecordingsnippets", + "module_short": "spikeinterface.core.baserecordingsnippets", + "name": "BaseRecordingSnippets.get_traces" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core", + "module_short": "spikeinterface.core", + "name": "BaseRecordingSnippets.get_traces" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "BaseRecordingSnippets.get_traces" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core.base", + "module_short": "spikeinterface.core.base", + "name": "BaseExtractor.get_traces" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core", + "module_short": "spikeinterface.core", + "name": "BaseExtractor.get_traces" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "BaseExtractor.get_traces" + } + ], + "end_frame": [ + { + "is_class": false, + "is_explicit": false, + "module": "builtins", + "module_short": "builtins", + "name": "int" + } + ], + "end_time": [ + { + "is_class": false, + "is_explicit": false, + "module": "builtins", + "module_short": "builtins", + "name": "int" + } + ], + "error": [ + { + "is_class": false, + "is_explicit": false, + "module": "numpy", + "module_short": "numpy", + "name": "float32" + } + ], + "fig": [ + { + "is_class": false, + "is_explicit": false, + "module": "matplotlib.figure", + "module_short": "matplotlib.figure", + "name": "Figure" + }, + { + "is_class": false, + "is_explicit": false, + "module": "matplotlib", + "module_short": "matplotlib", + "name": "Figure" + } + ], + "freq_alpha": [ + { + "is_class": false, + "is_explicit": false, + "module": "builtins", + "module_short": "builtins", + "name": "float" + } + ], + "freq_beta": [ + { + "is_class": false, + "is_explicit": false, + "module": "builtins", + "module_short": "builtins", + "name": "float" + } + ], + "freq_theta": [ + { + "is_class": false, + "is_explicit": false, + "module": "builtins", + "module_short": "builtins", + "name": "float" + } + ], + "generate_ground_truth_recording": [ + { + "is_class": false, + "is_explicit": false, + "module": "builtins", + "module_short": "builtins", + "name": "function" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core", + "module_short": "spikeinterface", + "name": "generate_ground_truth_recording" + } + ], + "lfp_signals": [ + { + "is_class": false, + "is_explicit": false, + "module": "numpy", + "module_short": "numpy", + "name": "ndarray" + } + ], + "margin": [ + { + "is_class": false, + "is_explicit": false, + "module": "builtins", + "module_short": "builtins", + "name": "int" + } + ], + "margin_in_s": [ + { + "is_class": false, + "is_explicit": false, + "module": "builtins", + "module_short": "builtins", + "name": "float" + } + ], + "margin_ms": [ + { + "is_class": false, + "is_explicit": false, + "module": "builtins", + "module_short": "builtins", + "name": "int" + } + ], + "margins_ms": [ + { + "is_class": false, + "is_explicit": false, + "module": "builtins", + "module_short": "builtins", + "name": "list" + } + ], + "np.abs": [ + { + "is_class": false, + "is_explicit": false, + "module": "numpy", + "module_short": "numpy", + "name": "ufunc" + }, + { + "is_class": false, + "is_explicit": false, + "module": "numpy", + "module_short": "numpy", + "name": "abs" + } + ], + "np.pi": [ + { + "is_class": false, + "is_explicit": false, + "module": "builtins", + "module_short": "builtins", + "name": "float" + }, + { + "is_class": false, + "is_explicit": false, + "module": "numpy", + "module_short": "numpy", + "name": "pi" + } + ], + "np.random.default_rng": [ + { + "is_class": false, + "is_explicit": false, + "module": "_cython_3_1_4", + "module_short": "_cython_3_1_4", + "name": "cython_function_or_method" + }, + { + "is_class": false, + "is_explicit": false, + "module": "numpy.random", + "module_short": "numpy.random", + "name": "default_rng" + } + ], + "np.sin": [ + { + "is_class": false, + "is_explicit": false, + "module": "numpy", + "module_short": "numpy", + "name": "ufunc" + }, + { + "is_class": false, + "is_explicit": false, + "module": "numpy", + "module_short": "numpy", + "name": "sin" + } + ], + "np.sum": [ + { + "is_class": false, + "is_explicit": false, + "module": "numpy", + "module_short": "numpy", + "name": "_ArrayFunctionDispatcher" + }, + { + "is_class": false, + "is_explicit": false, + "module": "numpy", + "module_short": "numpy", + "name": "sum" + } + ], + "np.zeros": [ + { + "is_class": false, + "is_explicit": false, + "module": "builtins", + "module_short": "builtins", + "name": "builtin_function_or_method" + }, + { + "is_class": false, + "is_explicit": false, + "module": "numpy", + "module_short": "numpy", + "name": "zeros" + } + ], + "num_channels": [ + { + "is_class": false, + "is_explicit": false, + "module": "builtins", + "module_short": "builtins", + "name": "int" + } + ], + "pd.DataFrame": [ + { + "is_class": true, + "is_explicit": false, + "module": "pandas.core.frame", + "module_short": "pandas.core.frame", + "name": "DataFrame" + }, + { + "is_class": true, + "is_explicit": false, + "module": "pandas.core", + "module_short": "pandas.core", + "name": "DataFrame" + }, + { + "is_class": true, + "is_explicit": false, + "module": "pandas", + "module_short": "pandas", + "name": "DataFrame" + }, + { + "is_class": true, + "is_explicit": false, + "module": "pandas.core.generic", + "module_short": "pandas.core.generic", + "name": "NDFrame" + }, + { + "is_class": true, + "is_explicit": false, + "module": "pandas.core", + "module_short": "pandas.core", + "name": "NDFrame" + }, + { + "is_class": true, + "is_explicit": false, + "module": "pandas", + "module_short": "pandas", + "name": "NDFrame" + }, + { + "is_class": true, + "is_explicit": false, + "module": "pandas.core.arraylike", + "module_short": "pandas.core.arraylike", + "name": "OpsMixin" + }, + { + "is_class": true, + "is_explicit": false, + "module": "pandas.core", + "module_short": "pandas.core", + "name": "OpsMixin" + }, + { + "is_class": true, + "is_explicit": false, + "module": "pandas", + "module_short": "pandas", + "name": "OpsMixin" + }, + { + "is_class": true, + "is_explicit": false, + "module": "pandas.core.base", + "module_short": "pandas.core.base", + "name": "PandasObject" + }, + { + "is_class": true, + "is_explicit": false, + "module": "pandas.core", + "module_short": "pandas.core", + "name": "PandasObject" + }, + { + "is_class": true, + "is_explicit": false, + "module": "pandas", + "module_short": "pandas", + "name": "PandasObject" + }, + { + "is_class": true, + "is_explicit": false, + "module": "pandas.core.indexing", + "module_short": "pandas.core.indexing", + "name": "IndexingMixin" + }, + { + "is_class": true, + "is_explicit": false, + "module": "pandas.core", + "module_short": "pandas.core", + "name": "IndexingMixin" + }, + { + "is_class": true, + "is_explicit": false, + "module": "pandas", + "module_short": "pandas", + "name": "IndexingMixin" + }, + { + "is_class": true, + "is_explicit": false, + "module": "pandas.core.accessor", + "module_short": "pandas.core.accessor", + "name": "DirNamesMixin" + }, + { + "is_class": true, + "is_explicit": false, + "module": "pandas.core", + "module_short": "pandas.core", + "name": "DirNamesMixin" + }, + { + "is_class": true, + "is_explicit": false, + "module": "pandas", + "module_short": "pandas", + "name": "DirNamesMixin" + }, + { + "is_class": false, + "is_explicit": false, + "module": "pandas", + "module_short": "pandas", + "name": "DataFrame" + } + ], + "phase_alpha": [ + { + "is_class": false, + "is_explicit": false, + "module": "builtins", + "module_short": "builtins", + "name": "float" + } + ], + "phase_beta": [ + { + "is_class": false, + "is_explicit": false, + "module": "builtins", + "module_short": "builtins", + "name": "float" + } + ], + "phase_theta": [ + { + "is_class": false, + "is_explicit": false, + "module": "builtins", + "module_short": "builtins", + "name": "float" + } + ], + "plt.subplots": [ + { + "is_class": false, + "is_explicit": false, + "module": "builtins", + "module_short": "builtins", + "name": "function" + }, + { + "is_class": false, + "is_explicit": false, + "module": "matplotlib.pyplot", + "module_short": "matplotlib.pyplot", + "name": "subplots" + } + ], + "recording": [ + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core.generate", + "module_short": "spikeinterface", + "name": "InjectTemplatesRecording" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core", + "module_short": "spikeinterface", + "name": "InjectTemplatesRecording" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "InjectTemplatesRecording" + } + ], + "recording.channel_ids": [ + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core.generate", + "module_short": "spikeinterface", + "name": "InjectTemplatesRecording.channel_ids" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core", + "module_short": "spikeinterface", + "name": "InjectTemplatesRecording.channel_ids" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "InjectTemplatesRecording.channel_ids" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core.baserecording", + "module_short": "spikeinterface", + "name": "BaseRecording.channel_ids" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core", + "module_short": "spikeinterface", + "name": "BaseRecording.channel_ids" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "BaseRecording.channel_ids" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core.baserecordingsnippets", + "module_short": "spikeinterface", + "name": "BaseRecordingSnippets.channel_ids" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core", + "module_short": "spikeinterface", + "name": "BaseRecordingSnippets.channel_ids" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "BaseRecordingSnippets.channel_ids" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core.base", + "module_short": "spikeinterface.core.base", + "name": "BaseExtractor.channel_ids" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core", + "module_short": "spikeinterface.core", + "name": "BaseExtractor.channel_ids" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "BaseExtractor.channel_ids" + } + ], + "recording.get_num_channels": [ + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core.generate", + "module_short": "spikeinterface", + "name": "InjectTemplatesRecording.get_num_channels" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core", + "module_short": "spikeinterface", + "name": "InjectTemplatesRecording.get_num_channels" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "InjectTemplatesRecording.get_num_channels" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core.baserecording", + "module_short": "spikeinterface", + "name": "BaseRecording.get_num_channels" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core", + "module_short": "spikeinterface", + "name": "BaseRecording.get_num_channels" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "BaseRecording.get_num_channels" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core.baserecordingsnippets", + "module_short": "spikeinterface", + "name": "BaseRecordingSnippets.get_num_channels" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core", + "module_short": "spikeinterface", + "name": "BaseRecordingSnippets.get_num_channels" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "BaseRecordingSnippets.get_num_channels" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core.base", + "module_short": "spikeinterface.core.base", + "name": "BaseExtractor.get_num_channels" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core", + "module_short": "spikeinterface.core", + "name": "BaseExtractor.get_num_channels" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "BaseExtractor.get_num_channels" + } + ], + "recording.get_num_samples": [ + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core.generate", + "module_short": "spikeinterface", + "name": "InjectTemplatesRecording.get_num_samples" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core", + "module_short": "spikeinterface", + "name": "InjectTemplatesRecording.get_num_samples" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "InjectTemplatesRecording.get_num_samples" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core.baserecording", + "module_short": "spikeinterface", + "name": "BaseRecording.get_num_samples" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core", + "module_short": "spikeinterface", + "name": "BaseRecording.get_num_samples" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "BaseRecording.get_num_samples" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core.baserecordingsnippets", + "module_short": "spikeinterface.core.baserecordingsnippets", + "name": "BaseRecordingSnippets.get_num_samples" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core", + "module_short": "spikeinterface.core", + "name": "BaseRecordingSnippets.get_num_samples" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "BaseRecordingSnippets.get_num_samples" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core.base", + "module_short": "spikeinterface.core.base", + "name": "BaseExtractor.get_num_samples" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core", + "module_short": "spikeinterface.core", + "name": "BaseExtractor.get_num_samples" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "BaseExtractor.get_num_samples" + } + ], + "recording.get_times": [ + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core.generate", + "module_short": "spikeinterface", + "name": "InjectTemplatesRecording.get_times" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core", + "module_short": "spikeinterface", + "name": "InjectTemplatesRecording.get_times" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "InjectTemplatesRecording.get_times" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core.baserecording", + "module_short": "spikeinterface", + "name": "BaseRecording.get_times" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core", + "module_short": "spikeinterface", + "name": "BaseRecording.get_times" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "BaseRecording.get_times" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core.baserecordingsnippets", + "module_short": "spikeinterface.core.baserecordingsnippets", + "name": "BaseRecordingSnippets.get_times" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core", + "module_short": "spikeinterface.core", + "name": "BaseRecordingSnippets.get_times" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "BaseRecordingSnippets.get_times" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core.base", + "module_short": "spikeinterface.core.base", + "name": "BaseExtractor.get_times" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core", + "module_short": "spikeinterface.core", + "name": "BaseExtractor.get_times" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "BaseExtractor.get_times" + } + ], + "recording.sampling_frequency": [ + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core.generate", + "module_short": "spikeinterface", + "name": "InjectTemplatesRecording.sampling_frequency" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core", + "module_short": "spikeinterface", + "name": "InjectTemplatesRecording.sampling_frequency" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "InjectTemplatesRecording.sampling_frequency" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core.baserecording", + "module_short": "spikeinterface", + "name": "BaseRecording.sampling_frequency" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core", + "module_short": "spikeinterface", + "name": "BaseRecording.sampling_frequency" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "BaseRecording.sampling_frequency" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core.baserecordingsnippets", + "module_short": "spikeinterface", + "name": "BaseRecordingSnippets.sampling_frequency" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core", + "module_short": "spikeinterface", + "name": "BaseRecordingSnippets.sampling_frequency" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "BaseRecordingSnippets.sampling_frequency" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core.base", + "module_short": "spikeinterface.core.base", + "name": "BaseExtractor.sampling_frequency" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core", + "module_short": "spikeinterface.core", + "name": "BaseExtractor.sampling_frequency" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "BaseExtractor.sampling_frequency" + } + ], + "recording_chunk": [ + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core.numpyextractors", + "module_short": "spikeinterface", + "name": "SharedMemoryRecording" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core", + "module_short": "spikeinterface", + "name": "SharedMemoryRecording" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "SharedMemoryRecording" + } + ], + "recording_chunk.get_traces": [ + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core.numpyextractors", + "module_short": "spikeinterface", + "name": "SharedMemoryRecording.get_traces" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core", + "module_short": "spikeinterface", + "name": "SharedMemoryRecording.get_traces" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "SharedMemoryRecording.get_traces" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core.baserecording", + "module_short": "spikeinterface", + "name": "BaseRecording.get_traces" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core", + "module_short": "spikeinterface", + "name": "BaseRecording.get_traces" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "BaseRecording.get_traces" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core.baserecordingsnippets", + "module_short": "spikeinterface.core.baserecordingsnippets", + "name": "BaseRecordingSnippets.get_traces" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core", + "module_short": "spikeinterface.core", + "name": "BaseRecordingSnippets.get_traces" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "BaseRecordingSnippets.get_traces" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core.base", + "module_short": "spikeinterface.core.base", + "name": "BaseExtractor.get_traces" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core", + "module_short": "spikeinterface.core", + "name": "BaseExtractor.get_traces" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "BaseExtractor.get_traces" + } + ], + "recording_chunk.save": [ + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core.numpyextractors", + "module_short": "spikeinterface", + "name": "SharedMemoryRecording.save" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core", + "module_short": "spikeinterface", + "name": "SharedMemoryRecording.save" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "SharedMemoryRecording.save" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core.baserecording", + "module_short": "spikeinterface", + "name": "BaseRecording.save" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core", + "module_short": "spikeinterface", + "name": "BaseRecording.save" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "BaseRecording.save" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core.baserecordingsnippets", + "module_short": "spikeinterface", + "name": "BaseRecordingSnippets.save" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core", + "module_short": "spikeinterface", + "name": "BaseRecordingSnippets.save" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "BaseRecordingSnippets.save" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core.base", + "module_short": "spikeinterface.core.base", + "name": "BaseExtractor.save" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core", + "module_short": "spikeinterface.core", + "name": "BaseExtractor.save" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "BaseExtractor.save" + } + ], + "recording_dict": [ + { + "is_class": false, + "is_explicit": false, + "module": "builtins", + "module_short": "builtins", + "name": "dict" + } + ], + "recording_filt": [ + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.preprocessing.filter", + "module_short": "spikeinterface.preprocessing.filter", + "name": "BandpassFilterRecording" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.preprocessing", + "module_short": "spikeinterface.preprocessing", + "name": "BandpassFilterRecording" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "BandpassFilterRecording" + } + ], + "recording_filt.margin_samples": [ + { + "is_class": false, + "is_explicit": false, + "module": "builtins", + "module_short": "builtins", + "name": "int" + } + ], + "recording_filt.save": [ + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.preprocessing.filter", + "module_short": "spikeinterface.preprocessing.filter", + "name": "BandpassFilterRecording.save" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.preprocessing", + "module_short": "spikeinterface.preprocessing", + "name": "BandpassFilterRecording.save" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "BandpassFilterRecording.save" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.preprocessing.filter", + "module_short": "spikeinterface.preprocessing.filter", + "name": "FilterRecording.save" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.preprocessing", + "module_short": "spikeinterface.preprocessing", + "name": "FilterRecording.save" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "FilterRecording.save" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.preprocessing.basepreprocessor", + "module_short": "spikeinterface.preprocessing.basepreprocessor", + "name": "BasePreprocessor.save" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.preprocessing", + "module_short": "spikeinterface.preprocessing", + "name": "BasePreprocessor.save" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "BasePreprocessor.save" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core.baserecording", + "module_short": "spikeinterface", + "name": "BaseRecording.save" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core", + "module_short": "spikeinterface", + "name": "BaseRecording.save" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "BaseRecording.save" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core.baserecordingsnippets", + "module_short": "spikeinterface", + "name": "BaseRecordingSnippets.save" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core", + "module_short": "spikeinterface", + "name": "BaseRecordingSnippets.save" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "BaseRecordingSnippets.save" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core.base", + "module_short": "spikeinterface.core.base", + "name": "BaseExtractor.save" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core", + "module_short": "spikeinterface.core", + "name": "BaseExtractor.save" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "BaseExtractor.save" + } + ], + "recording_key": [ + { + "is_class": false, + "is_explicit": false, + "module": "builtins", + "module_short": "builtins", + "name": "tuple" + } + ], + "recording_lfp": [ + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core.numpyextractors", + "module_short": "spikeinterface", + "name": "NumpyRecording" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core", + "module_short": "spikeinterface", + "name": "NumpyRecording" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "NumpyRecording" + } + ], + "recording_lfp.sampling_frequency": [ + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core.numpyextractors", + "module_short": "spikeinterface", + "name": "NumpyRecording.sampling_frequency" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core", + "module_short": "spikeinterface", + "name": "NumpyRecording.sampling_frequency" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "NumpyRecording.sampling_frequency" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core.baserecording", + "module_short": "spikeinterface", + "name": "BaseRecording.sampling_frequency" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core", + "module_short": "spikeinterface", + "name": "BaseRecording.sampling_frequency" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "BaseRecording.sampling_frequency" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core.baserecordingsnippets", + "module_short": "spikeinterface", + "name": "BaseRecordingSnippets.sampling_frequency" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core", + "module_short": "spikeinterface", + "name": "BaseRecordingSnippets.sampling_frequency" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "BaseRecordingSnippets.sampling_frequency" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core.base", + "module_short": "spikeinterface.core.base", + "name": "BaseExtractor.sampling_frequency" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core", + "module_short": "spikeinterface.core", + "name": "BaseExtractor.sampling_frequency" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "BaseExtractor.sampling_frequency" + } + ], + "recording_optimal": [ + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core.numpyextractors", + "module_short": "spikeinterface", + "name": "SharedMemoryRecording" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core", + "module_short": "spikeinterface", + "name": "SharedMemoryRecording" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "SharedMemoryRecording" + } + ], + "recording_optimal.get_times": [ + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core.numpyextractors", + "module_short": "spikeinterface", + "name": "SharedMemoryRecording.get_times" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core", + "module_short": "spikeinterface", + "name": "SharedMemoryRecording.get_times" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "SharedMemoryRecording.get_times" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core.baserecording", + "module_short": "spikeinterface", + "name": "BaseRecording.get_times" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core", + "module_short": "spikeinterface", + "name": "BaseRecording.get_times" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "BaseRecording.get_times" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core.baserecordingsnippets", + "module_short": "spikeinterface.core.baserecordingsnippets", + "name": "BaseRecordingSnippets.get_times" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core", + "module_short": "spikeinterface.core", + "name": "BaseRecordingSnippets.get_times" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "BaseRecordingSnippets.get_times" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core.base", + "module_short": "spikeinterface.core.base", + "name": "BaseExtractor.get_times" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core", + "module_short": "spikeinterface.core", + "name": "BaseExtractor.get_times" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "BaseExtractor.get_times" + } + ], + "recording_optimal.get_traces": [ + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core.numpyextractors", + "module_short": "spikeinterface", + "name": "SharedMemoryRecording.get_traces" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core", + "module_short": "spikeinterface", + "name": "SharedMemoryRecording.get_traces" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "SharedMemoryRecording.get_traces" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core.baserecording", + "module_short": "spikeinterface", + "name": "BaseRecording.get_traces" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core", + "module_short": "spikeinterface", + "name": "BaseRecording.get_traces" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "BaseRecording.get_traces" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core.baserecordingsnippets", + "module_short": "spikeinterface.core.baserecordingsnippets", + "name": "BaseRecordingSnippets.get_traces" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core", + "module_short": "spikeinterface.core", + "name": "BaseRecordingSnippets.get_traces" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "BaseRecordingSnippets.get_traces" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core.base", + "module_short": "spikeinterface.core.base", + "name": "BaseExtractor.get_traces" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core", + "module_short": "spikeinterface.core", + "name": "BaseExtractor.get_traces" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "BaseExtractor.get_traces" + } + ], + "recording_optimal.sampling_frequency": [ + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core.numpyextractors", + "module_short": "spikeinterface", + "name": "SharedMemoryRecording.sampling_frequency" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core", + "module_short": "spikeinterface", + "name": "SharedMemoryRecording.sampling_frequency" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "SharedMemoryRecording.sampling_frequency" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core.baserecording", + "module_short": "spikeinterface", + "name": "BaseRecording.sampling_frequency" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core", + "module_short": "spikeinterface", + "name": "BaseRecording.sampling_frequency" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "BaseRecording.sampling_frequency" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core.baserecordingsnippets", + "module_short": "spikeinterface", + "name": "BaseRecordingSnippets.sampling_frequency" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core", + "module_short": "spikeinterface", + "name": "BaseRecordingSnippets.sampling_frequency" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "BaseRecordingSnippets.sampling_frequency" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core.base", + "module_short": "spikeinterface.core.base", + "name": "BaseExtractor.sampling_frequency" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core", + "module_short": "spikeinterface.core", + "name": "BaseExtractor.sampling_frequency" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "BaseExtractor.sampling_frequency" + } + ], + "recording_with_lfp": [ + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core.operatorrecordings", + "module_short": "spikeinterface.core.operatorrecordings", + "name": "AddRecordings" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core", + "module_short": "spikeinterface.core", + "name": "AddRecordings" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "AddRecordings" + } + ], + "recordings_chunked": [ + { + "is_class": false, + "is_explicit": false, + "module": "builtins", + "module_short": "builtins", + "name": "dict" + } + ], + "recordings_chunked.items": [ + { + "is_class": false, + "is_explicit": false, + "module": "builtins", + "module_short": "builtins", + "name": "builtin_function_or_method" + } + ], + "result_dict": [ + { + "is_class": false, + "is_explicit": false, + "module": "builtins", + "module_short": "builtins", + "name": "dict" + } + ], + "rng": [ + { + "is_class": false, + "is_explicit": false, + "module": "numpy.random._generator", + "module_short": "numpy.random", + "name": "Generator" + }, + { + "is_class": false, + "is_explicit": false, + "module": "numpy.random", + "module_short": "numpy.random", + "name": "Generator" + }, + { + "is_class": false, + "is_explicit": false, + "module": "numpy", + "module_short": "numpy", + "name": "Generator" + } + ], + "rng.random": [ + { + "is_class": false, + "is_explicit": false, + "module": "numpy.random._generator", + "module_short": "numpy.random", + "name": "Generator.random" + }, + { + "is_class": false, + "is_explicit": false, + "module": "numpy.random", + "module_short": "numpy.random", + "name": "Generator.random" + }, + { + "is_class": false, + "is_explicit": false, + "module": "numpy", + "module_short": "numpy", + "name": "Generator.random" + } + ], + "si.NumpyRecording": [ + { + "is_class": true, + "is_explicit": false, + "module": "spikeinterface.core.numpyextractors", + "module_short": "spikeinterface", + "name": "NumpyRecording" + }, + { + "is_class": true, + "is_explicit": false, + "module": "spikeinterface.core", + "module_short": "spikeinterface", + "name": "NumpyRecording" + }, + { + "is_class": true, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "NumpyRecording" + }, + { + "is_class": true, + "is_explicit": false, + "module": "spikeinterface.core.baserecording", + "module_short": "spikeinterface", + "name": "BaseRecording" + }, + { + "is_class": true, + "is_explicit": false, + "module": "spikeinterface.core", + "module_short": "spikeinterface", + "name": "BaseRecording" + }, + { + "is_class": true, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "BaseRecording" + }, + { + "is_class": true, + "is_explicit": false, + "module": "spikeinterface.core.baserecordingsnippets", + "module_short": "spikeinterface", + "name": "BaseRecordingSnippets" + }, + { + "is_class": true, + "is_explicit": false, + "module": "spikeinterface.core", + "module_short": "spikeinterface", + "name": "BaseRecordingSnippets" + }, + { + "is_class": true, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "BaseRecordingSnippets" + }, + { + "is_class": true, + "is_explicit": false, + "module": "spikeinterface.core.base", + "module_short": "spikeinterface.core.base", + "name": "BaseExtractor" + }, + { + "is_class": true, + "is_explicit": false, + "module": "spikeinterface.core", + "module_short": "spikeinterface.core", + "name": "BaseExtractor" + }, + { + "is_class": true, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "BaseExtractor" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "NumpyRecording" + } + ], + "sns.barplot": [ + { + "is_class": false, + "is_explicit": false, + "module": "builtins", + "module_short": "builtins", + "name": "function" + }, + { + "is_class": false, + "is_explicit": false, + "module": "seaborn", + "module_short": "seaborn", + "name": "barplot" + } + ], + "sns.despine": [ + { + "is_class": false, + "is_explicit": false, + "module": "builtins", + "module_short": "builtins", + "name": "function" + }, + { + "is_class": false, + "is_explicit": false, + "module": "seaborn", + "module_short": "seaborn", + "name": "despine" + } + ], + "sorting": [ + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core.numpyextractors", + "module_short": "spikeinterface", + "name": "NumpySorting" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core", + "module_short": "spikeinterface", + "name": "NumpySorting" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "NumpySorting" + } + ], + "spre.bandpass_filter": [ + { + "is_class": false, + "is_explicit": false, + "module": "builtins", + "module_short": "builtins", + "name": "function" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.preprocessing", + "module_short": "spikeinterface.preprocessing", + "name": "bandpass_filter" + } + ], + "start_frame": [ + { + "is_class": false, + "is_explicit": false, + "module": "builtins", + "module_short": "builtins", + "name": "int" + } + ], + "start_time": [ + { + "is_class": false, + "is_explicit": false, + "module": "builtins", + "module_short": "builtins", + "name": "int" + } + ], + "sw.plot_traces": [ + { + "is_class": true, + "is_explicit": false, + "module": "spikeinterface.widgets.traces", + "module_short": "spikeinterface.widgets", + "name": "TracesWidget" + }, + { + "is_class": true, + "is_explicit": false, + "module": "spikeinterface.widgets", + "module_short": "spikeinterface.widgets", + "name": "TracesWidget" + }, + { + "is_class": true, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "TracesWidget" + }, + { + "is_class": true, + "is_explicit": false, + "module": "spikeinterface.widgets.base", + "module_short": "spikeinterface.widgets.base", + "name": "BaseWidget" + }, + { + "is_class": true, + "is_explicit": false, + "module": "spikeinterface.widgets", + "module_short": "spikeinterface.widgets", + "name": "BaseWidget" + }, + { + "is_class": true, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "BaseWidget" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.widgets", + "module_short": "spikeinterface.widgets", + "name": "plot_traces" + } + ], + "t_start": [ + { + "is_class": false, + "is_explicit": false, + "module": "builtins", + "module_short": "builtins", + "name": "float" + } + ], + "t_stop": [ + { + "is_class": false, + "is_explicit": false, + "module": "builtins", + "module_short": "builtins", + "name": "float" + } + ], + "time": [ + { + "is_class": false, + "is_explicit": false, + "module": "builtins", + "module_short": "builtins", + "name": "float" + }, + { + "is_class": false, + "is_explicit": false, + "module": "builtins", + "module_short": "builtins", + "name": "time" + } + ], + "time.perf_counter": [ + { + "is_class": false, + "is_explicit": false, + "module": "builtins", + "module_short": "builtins", + "name": "float" + }, + { + "is_class": false, + "is_explicit": false, + "module": "time", + "module_short": "time", + "name": "perf_counter" + } + ], + "time_vector": [ + { + "is_class": false, + "is_explicit": false, + "module": "numpy", + "module_short": "numpy", + "name": "ndarray" + } + ], + "timestamps": [ + { + "is_class": false, + "is_explicit": false, + "module": "numpy", + "module_short": "numpy", + "name": "ndarray" + } + ], + "trace_plotted": [ + { + "is_class": false, + "is_explicit": false, + "module": "builtins", + "module_short": "builtins", + "name": "bool" + } + ], + "traces_chunk": [ + { + "is_class": false, + "is_explicit": false, + "module": "numpy", + "module_short": "numpy", + "name": "ndarray" + } + ], + "traces_diff": [ + { + "is_class": false, + "is_explicit": false, + "module": "numpy", + "module_short": "numpy", + "name": "ndarray" + } + ], + "traces_opt": [ + { + "is_class": false, + "is_explicit": false, + "module": "numpy", + "module_short": "numpy", + "name": "ndarray" + } + ], + "traces_optimal": [ + { + "is_class": false, + "is_explicit": false, + "module": "numpy", + "module_short": "numpy", + "name": "ndarray" + } + ] +} diff --git a/doc/forhowto/plot_extract_lfps.ipynb b/doc/forhowto/plot_extract_lfps.ipynb new file mode 100644 index 0000000000..8f72547112 --- /dev/null +++ b/doc/forhowto/plot_extract_lfps.ipynb @@ -0,0 +1,316 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n# Extract LFPs\n\nUnderstanding filtering artifacts and chunking when extracting LFPs\n\nLocal Field Potentials (LFPs) are low-frequency signals (<300 Hz) that reflect the summed activity of many neurons.\nExtracting LFPs from high-sampling-rate recordings requires bandpass filtering, but this can introduce artifacts\nwhen not done carefully, especially when data is processed in chunks (for memory efficiency).\n\nThis tutorial demonstrates:\n\n1. How to generate simulated LFP data\n2. Common pitfalls when filtering with low cutoff frequencies\n3. How chunking and margins affect filtering artifacts\n4. Summary\n\n**Key takeaway**: For LFP extraction, use large chunks (30-60s) and large margins (several seconds) to minimize\nedge artifacts, even though this is less memory-efficient.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Import necessary modules\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "import time\nimport numpy as np\nimport matplotlib.pyplot as plt\nfrom pathlib import Path\nimport pandas as pd\nimport seaborn as sns\n\nimport spikeinterface as si\nimport spikeinterface.extractors as se\nimport spikeinterface.preprocessing as spre\nimport spikeinterface.widgets as sw\nfrom spikeinterface.core import generate_ground_truth_recording" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 1. Generate simulated recording with low-frequency signals\n\nLet's create a simulated recording and add some low-frequency sinusoids that mimic LFP activity.\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Generate a ground truth recording with spikes\n# Use a higher sampling rate (30 kHz) to simulate raw neural data\nrecording, sorting = generate_ground_truth_recording(\n durations=[300.0], # 300 s\n sampling_frequency=30000.0,\n num_channels=1,\n num_units=4,\n seed=2305,\n)\n\nprint(recording)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now let's add some low-frequency sinusoidal components to simulate LFP signals\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Add low-frequency sinusoids with different frequencies and phases per channel\nrng = np.random.default_rng(42)\nnum_channels = recording.get_num_channels()\nlfp_signals = np.zeros(\n (recording.get_num_samples(), recording.get_num_channels())\n)\ntime_vector = recording.get_times()\n\nfor ch in range(num_channels):\n # Add multiple frequency components (theta, alpha, beta ranges)\n # Theta-like: 4-8 Hz\n freq_theta = 4 + rng.random() * 4\n phase_theta = rng.random() * 2 * np.pi\n amp_theta = 50 + rng.random() * 50\n\n # Alpha-like: 8-12 Hz\n freq_alpha = 8 + rng.random() * 4\n phase_alpha = rng.random() * 2 * np.pi\n amp_alpha = 30 + rng.random() * 30\n\n # Beta-like: 12-30 Hz\n freq_beta = 12 + rng.random() * 18\n phase_beta = rng.random() * 2 * np.pi\n amp_beta = 20 + rng.random() * 20\n\n lfp_signals[:, ch] = (\n amp_theta * np.sin(2 * np.pi * freq_theta * time_vector + phase_theta)\n + amp_alpha * np.sin(2 * np.pi * freq_alpha * time_vector + phase_alpha)\n + amp_beta * np.sin(2 * np.pi * freq_beta * time_vector + phase_beta)\n )\n\n# Create a recording with the added LFP signals\nrecording_lfp = si.NumpyRecording(\n traces_list=[lfp_signals],\n sampling_frequency=recording.sampling_frequency,\n channel_ids=recording.channel_ids,\n)\nrecording_with_lfp = recording + recording_lfp" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's visualize a short segment of the signal\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "_ = sw.plot_traces(recording_with_lfp, time_range=[0, 3])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 2. Filtering with low cutoff frequencies: the problem\n\nNow let's try to extract LFPs using a bandpass filter with a low highpass cutoff (1 Hz).\nThis will demonstrate a common issue.\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Try to filter with 1 Hz highpass\ntry:\n recording_lfp_1hz = spre.bandpass_filter(\n recording_with_lfp, freq_min=1.0, freq_max=300.0\n )\nexcept Exception as e:\n print(f\"Error message:\\n{str(e)}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Why does this fail?**\n\nThe error occurs because by default in SpikeInterface when highpass filtering below 100 Hz.\nFilters with very low cutoff frequencies have long impulse responses, which require larger margins to avoid edge artifacts between chunks.\n\nThe filter length (and required margin) scales inversely with the highpass frequency. A 1 Hz highpass\nfilter requires a margin of several seconds, while a 300 Hz highpass (for spike extraction) only needs\na few milliseconds.\n\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 3. Understanding chunking and margins\n\nSpikeInterface processes recordings in chunks to handle large datasets efficiently. Each chunk needs\na \"margin\" (extra samples at the edges) to avoid edge artifacts when filtering. Let's demonstrate\nthis by saving the filtered data with different chunking strategies.\n\n**This error is to inform the user that extra care should be used when dealing with LFP signals!**\n\nWe can ignore this error, but let's make sure we understand what it's happening.\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# We can ignore this error, but let's see what is happening\nrecording_filt = spre.bandpass_filter(\n recording_with_lfp, freq_min=1.0, freq_max=300.0, ignore_low_freq_error=True\n)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "When retrieving traces, extra samples will be retrieved at the left and right edges.\nBy default, the filter function will set a margin to 5x the sampling period associated to `freq_min`.\nSo for a 1 Hz cutoff frequency, the margin will be 5 seconds!\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "margin_in_s = recording_filt.margin_samples / recording_lfp.sampling_frequency\nprint(f\"Margin: {margin_in_s} s\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This effectively means that if we plot 1-s snippet of traces, a total of 11 s will actually be read and filtered.\nNote that the margin can be overridden with the `margin_ms` argument, but we do not recommend changing it.\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "_ = sw.plot_traces(recording_filt, time_range=[20, 21])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "A warning tells us that what we are doing is not optimized, since in order to get the requested traces\nthe margin \"overhead\" is very large.\n\nIf we ask or plot longer snippets, the warning is not displayed.\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "_ = sw.plot_traces(recording_filt, time_range=[20, 80])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 4. Quantification and visualization of the artifacts\n\nLet's extract the traces and visualize the differences between chunking strategies.\nWe'll focus on the chunk boundaries where artifacts appear.\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "margins_ms = [100, 1000, 5000]\nchunk_durations = [\"1s\", \"10s\", \"30s\"]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The best we can do is to save the full recording in one chunk. This will cause no artifacts and chunking effects,\nbut in practice it's not possible due to the duration and number of channels of most setups.\n\nSince in this toy case we have a single channel 5-min recording, we can use this as \"optimal\".\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "recording_optimal = recording_filt.save(\n format=\"memory\",\n chunk_duration=\"1000s\",\n progress_bar=False\n)\n\nprint(recording_optimal)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we can do the same with our various options:\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "recordings_chunked = {}\n\nfor margin_ms in margins_ms:\n for chunk_duration in chunk_durations:\n print(f\"Margin ms: {margin_ms} - Chunk duration: {chunk_duration}\")\n t_start = time.perf_counter()\n recording_chunk = spre.bandpass_filter(\n recording_with_lfp,\n freq_min=1.0,\n freq_max=300.0,\n margin_ms=margin_ms,\n ignore_low_freq_error=True,\n )\n recording_chunk = recording_chunk.save(\n format=\"memory\",\n chunk_duration=chunk_duration,\n verbose=False,\n progress_bar=False\n )\n t_stop = time.perf_counter()\n result_dict = {\"recording\": recording_chunk, \"time\": t_stop - t_start}\n recordings_chunked[(margin_ms, chunk_duration)] = result_dict" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's visualize the error for the \"10s\" chunks and different margins, centered around 30s (which is a chunk edge):\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "fig, ax = plt.subplots(figsize=(10, 5))\ntrace_plotted = False\nstart_time = 15 # seconds\nend_time = 45 # seconds\nstart_frame = int(start_time * recording_optimal.sampling_frequency)\nend_frame = int(end_time * recording_optimal.sampling_frequency)\ntimestamps = recording_optimal.get_times()[start_frame:end_frame]\nfor recording_key, recording_dict in recordings_chunked.items():\n recording_chunk = recording_dict[\"recording\"]\n margin, chunk = recording_key\n # only plot \"10s\" chunks\n if chunk != \"10s\":\n continue\n traces_opt = recording_optimal.get_traces(\n start_frame=start_frame, end_frame=end_frame\n )\n if not trace_plotted:\n ax.plot(timestamps, traces_opt, color=\"grey\", label=\"traces\", alpha=0.5)\n trace_plotted = True\n diff = recording_optimal - recording_chunk\n traces_diff = diff.get_traces(start_frame=start_frame, end_frame=end_frame)\n ax.plot(timestamps, traces_diff, label=f\"Margin: {margin}\")\n for chunk in [20, 30, 40]: # chunk boundaries at 10s intervals\n ax.axvline(x=chunk, color=\"red\", linestyle=\"--\", alpha=0.5)\n\nax.set_xlabel(\"Time (s)\")\nax.set_ylabel(\"Voltage ($\\\\mu V$)\")\n_ = ax.legend()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "From the plot, we can see that there is a very small error when the margin size is large (green),\na larger error when the margin is smaller (orange) and a large error when the margin is small (blue).\nSo we need large margins (compared to the chunk size) if we want accurate filtered.\n\nThe artifacts do not depend on chunk size, but for smaller chunk sizes, these artifacts will happen more often.\nIn addition, the margin \"overhead\" will make processing slower. Let's quantify these concepts by computing the\noverall absolute error with respect to the optimal case and processing time.\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "trace_plotted = False\ntraces_optimal = recording_optimal.get_traces()\ndata = {\"margin\": [], \"chunk\": [], \"error\": [], \"time\": []}\nfor recording_key, recording_dict in recordings_chunked.items():\n recording_chunk = recording_dict[\"recording\"]\n time = recording_dict[\"time\"]\n margin, chunk = recording_key\n traces_chunk = recording_chunk.get_traces()\n error = np.sum(np.abs(traces_optimal - traces_chunk))\n data[\"margin\"].append(margin)\n data[\"chunk\"].append(chunk)\n data[\"error\"].append(error)\n data[\"time\"].append(time)\n\ndf = pd.DataFrame(data=data)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now let's visualize the error and processing time for different margin and chunk size combinations\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "fig, axs = plt.subplots(ncols=2, figsize=(10, 5))\nsns.barplot(data=data, x=\"margin\", y=\"error\", hue=\"chunk\", ax=axs[0])\naxs[0].set_yscale(\"log\")\nsns.barplot(data=data, x=\"margin\", y=\"time\", hue=\"chunk\", ax=axs[1])\naxs[0].set_title(\"Error VS margin x chunk size\")\naxs[1].set_title(\"Processing time VS margin x chunk size\")\n\nsns.despine(fig)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Summary\n\n1. **Low-frequency filters require special care**: Filters with low cutoff frequencies (< 10 Hz) have long\n impulse responses that require large margins to avoid edge artifacts.\n\n2. **Chunking artifacts are real**: When processing data in chunks, insufficient margins lead to visible\n discontinuities and errors at chunk boundaries.\n\n3. **The solution: large chunks and large margins**: For LFP extraction (1-300 Hz), use:\n - Chunk size: 30-60 seconds\n - Margin size: 5 seconds (for 1 Hz highpass) (**use defaults!**)\n - This is less memory-efficient but more accurate\n\n4. **Downsample after filtering**: After bandpass filtering, downsample to reduce data size (e.g., to 1-2.5 kHz\n for 300 Hz max frequency).\n\n5. **Trade-offs**: There's always a trade-off between computational efficiency (smaller chunks, less memory)\n and accuracy (larger chunks, fewer artifacts). For LFP analysis, accuracy should take priority.\n\n**When processing your own data:**\n\n- If you have memory constraints, use the largest chunk size your system can handle\n- Always verify your filtering parameters on a small test segment first\n- Consider the lowest frequency component you want to preserve when setting margins\n- Save the processed LFP data to disk to avoid recomputing\n\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.13.2" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/examples/how_to/extract_lfps.py b/doc/forhowto/plot_extract_lfps.py similarity index 54% rename from examples/how_to/extract_lfps.py rename to doc/forhowto/plot_extract_lfps.py index a8a952d59a..4eb4393c22 100644 --- a/examples/how_to/extract_lfps.py +++ b/doc/forhowto/plot_extract_lfps.py @@ -1,38 +1,27 @@ -# --- -# jupyter: -# jupytext: -# cell_metadata_filter: -all -# formats: ipynb,py:percent -# text_representation: -# extension: .py -# format_name: percent -# format_version: '1.3' -# jupytext_version: 1.18.1 -# kernelspec: -# display_name: Python 3 (ipykernel) -# language: python -# name: python3 -# --- - -# %% [markdown] -# # Extract LFPs -# -# ### Understanding filtering artifacts and chunking when extracting LFPs -# -# Local Field Potentials (LFPs) are low-frequency signals (<300 Hz) that reflect the summed activity of many neurons. -# Extracting LFPs from high-sampling-rate recordings requires bandpass filtering, but this can introduce artifacts -# when not done carefully, especially when data is processed in chunks (for memory efficiency). -# -# This tutorial demonstrates: -# 1. How to generate simulated LFP data -# 2. Common pitfalls when filtering with low cutoff frequencies -# 3. How chunking and margins affect filtering artifacts -# 4. Summary -# -# **Key takeaway**: For LFP extraction, use large chunks (30-60s) and large margins (several seconds) to minimize -# edge artifacts, even though this is less memory-efficient. +""" +Extract LFPs +============ + +Understanding filtering artifacts and chunking when extracting LFPs + +Local Field Potentials (LFPs) are low-frequency signals (<300 Hz) that reflect the summed activity of many neurons. +Extracting LFPs from high-sampling-rate recordings requires bandpass filtering, but this can introduce artifacts +when not done carefully, especially when data is processed in chunks (for memory efficiency). + +This tutorial demonstrates: + +1. How to generate simulated LFP data +2. Common pitfalls when filtering with low cutoff frequencies +3. How chunking and margins affect filtering artifacts +4. Summary + +**Key takeaway**: For LFP extraction, use large chunks (30-60s) and large margins (several seconds) to minimize +edge artifacts, even though this is less memory-efficient. +""" + +############################################################################## +# Import necessary modules -# %% import time import numpy as np import matplotlib.pyplot as plt @@ -46,15 +35,12 @@ import spikeinterface.widgets as sw from spikeinterface.core import generate_ground_truth_recording -# %% -# %matplotlib inline - -# %% [markdown] -# ## 1. Generate simulated recording with low-frequency signals +############################################################################## +# 1. Generate simulated recording with low-frequency signals +# ----------------------------------------------------------- # # Let's create a simulated recording and add some low-frequency sinusoids that mimic LFP activity. -# %% # Generate a ground truth recording with spikes # Use a higher sampling rate (30 kHz) to simulate raw neural data recording, sorting = generate_ground_truth_recording( @@ -65,72 +51,72 @@ seed=2305, ) -print(f"Recording: {recording}") -print(f"Duration: {recording.get_total_duration():.1f} s") -print(f"Sampling frequency: {recording.sampling_frequency} Hz") -print(f"Number of channels: {recording.get_num_channels()}") +print(recording) -# %% [markdown] +############################################################################## # Now let's add some low-frequency sinusoidal components to simulate LFP signals -# %% # Add low-frequency sinusoids with different frequencies and phases per channel -np.random.seed(2305) +rng = np.random.default_rng(42) num_channels = recording.get_num_channels() -lfp_signals = np.zeros((recording.get_num_samples(), recording.get_num_channels())) +lfp_signals = np.zeros( + (recording.get_num_samples(), recording.get_num_channels()) +) time_vector = recording.get_times() for ch in range(num_channels): # Add multiple frequency components (theta, alpha, beta ranges) # Theta-like: 4-8 Hz - freq_theta = 4 + np.random.rand() * 4 - phase_theta = np.random.rand() * 2 * np.pi - amp_theta = 50 + np.random.rand() * 50 + freq_theta = 4 + rng.random() * 4 + phase_theta = rng.random() * 2 * np.pi + amp_theta = 50 + rng.random() * 50 # Alpha-like: 8-12 Hz - freq_alpha = 8 + np.random.rand() * 4 - phase_alpha = np.random.rand() * 2 * np.pi - amp_alpha = 30 + np.random.rand() * 30 + freq_alpha = 8 + rng.random() * 4 + phase_alpha = rng.random() * 2 * np.pi + amp_alpha = 30 + rng.random() * 30 # Beta-like: 12-30 Hz - freq_beta = 12 + np.random.rand() * 18 - phase_beta = np.random.rand() * 2 * np.pi - amp_beta = 20 + np.random.rand() * 20 + freq_beta = 12 + rng.random() * 18 + phase_beta = rng.random() * 2 * np.pi + amp_beta = 20 + rng.random() * 20 lfp_signals[:, ch] = ( - amp_theta * np.sin(2 * np.pi * freq_theta * time_vector + phase_theta) + - amp_alpha * np.sin(2 * np.pi * freq_alpha * time_vector + phase_alpha) + - amp_beta * np.sin(2 * np.pi * freq_beta * time_vector + phase_beta) + amp_theta * np.sin(2 * np.pi * freq_theta * time_vector + phase_theta) + + amp_alpha * np.sin(2 * np.pi * freq_alpha * time_vector + phase_alpha) + + amp_beta * np.sin(2 * np.pi * freq_beta * time_vector + phase_beta) ) # Create a recording with the added LFP signals -recording_lfp = si.NumpyRecording(traces_list=[lfp_signals], sampling_frequency=recording.sampling_frequency, - channel_ids=recording.channel_ids) +recording_lfp = si.NumpyRecording( + traces_list=[lfp_signals], + sampling_frequency=recording.sampling_frequency, + channel_ids=recording.channel_ids, +) recording_with_lfp = recording + recording_lfp -print("Added low-frequency components to simulate LFP signals") -# %% [markdown] +############################################################################## # Let's visualize a short segment of the signal -# %% -sw.plot_traces(recording_with_lfp, time_range=[0, 3]) +_ = sw.plot_traces(recording_with_lfp, time_range=[0, 3]) -# %% [markdown] -# ## 2. Filtering with low cutoff frequencies: the problem +############################################################################## +# 2. Filtering with low cutoff frequencies: the problem +# ------------------------------------------------------ # # Now let's try to extract LFPs using a bandpass filter with a low highpass cutoff (1 Hz). # This will demonstrate a common issue. -# %% # Try to filter with 1 Hz highpass try: - recording_lfp_1hz = spre.bandpass_filter(recording_with_lfp, freq_min=1.0, freq_max=300.0) - print("Filtering succeeded!") + recording_lfp_1hz = spre.bandpass_filter( + recording_with_lfp, freq_min=1.0, freq_max=300.0 + ) except Exception as e: print(f"Error message:\n{str(e)}") -# %% [markdown] +############################################################################## # **Why does this fail?** # # The error occurs because by default in SpikeInterface when highpass filtering below 100 Hz. @@ -140,8 +126,9 @@ # filter requires a margin of several seconds, while a 300 Hz highpass (for spike extraction) only needs # a few milliseconds. -# %% [markdown] -# ## 3. Understanding chunking and margins +############################################################################## +# 3. Understanding chunking and margins +# -------------------------------------- # # SpikeInterface processes recordings in chunks to handle large datasets efficiently. Each chunk needs # a "margin" (extra samples at the edges) to avoid edge artifacts when filtering. Let's demonstrate @@ -151,58 +138,60 @@ # # We can ignore this error, but let's make sure we understand what it's happening. -# %% # We can ignore this error, but let's see what is happening -recording_filt = spre.bandpass_filter(recording_with_lfp, freq_min=1.0, freq_max=300.0, ignore_low_freq_error=True) +recording_filt = spre.bandpass_filter( + recording_with_lfp, freq_min=1.0, freq_max=300.0, ignore_low_freq_error=True +) -# %% [markdown] +############################################################################## # When retrieving traces, extra samples will be retrieved at the left and right edges. # By default, the filter function will set a margin to 5x the sampling period associated to `freq_min`. # So for a 1 Hz cutoff frequency, the margin will be 5 seconds! -# %% margin_in_s = recording_filt.margin_samples / recording_lfp.sampling_frequency print(f"Margin: {margin_in_s} s") -# %% [markdown] -# This effectively means that if we plot 1-s snippet of traces, a total of 11 s will actually be read and filtered. Note that the margin can be overridden with the `margin_ms` argument, but we do not recommend changing it. +############################################################################## +# This effectively means that if we plot 1-s snippet of traces, a total of 11 s will actually be read and filtered. +# Note that the margin can be overridden with the `margin_ms` argument, but we do not recommend changing it. -# %% -sw.plot_traces(recording_filt, time_range=[20, 21]) +_ = sw.plot_traces(recording_filt, time_range=[20, 21]) -# %% [markdown] -# A warning tells us that what we are doing is not optimized, since in order to get the requested traces the marging "overhead" is very large. +############################################################################## +# A warning tells us that what we are doing is not optimized, since in order to get the requested traces +# the margin "overhead" is very large. # # If we ask or plot longer snippets, the warning is not displayed. -# %% -sw.plot_traces(recording_filt, time_range=[20, 80]) +_ = sw.plot_traces(recording_filt, time_range=[20, 80]) -# %% [markdown] -# ## 4. Quantification and visualization the artifacts +############################################################################## +# 4. Quantification and visualization of the artifacts +# ----------------------------------------------------- # # Let's extract the traces and visualize the differences between chunking strategies. # We'll focus on the chunk boundaries where artifacts appear. -# %% margins_ms = [100, 1000, 5000] chunk_durations = ["1s", "10s", "30s"] -# %% [markdown] -# The best we can do is to save the full recording in one chunk. This will cause no artifacts and chunking effects, but in practice it's not possible due to the duration and number of channels of most setups. +############################################################################## +# The best we can do is to save the full recording in one chunk. This will cause no artifacts and chunking effects, +# but in practice it's not possible due to the duration and number of channels of most setups. # # Since in this toy case we have a single channel 5-min recording, we can use this as "optimal". -# %% -recording_optimal = recording_filt.save(format="memory", chunk_duration="1000s") +recording_optimal = recording_filt.save( + format="memory", + chunk_duration="1000s", + progress_bar=False +) -# %% -recording_optimal +print(recording_optimal) -# %% [markdown] +############################################################################## # Now we can do the same with our various options: -# %% recordings_chunked = {} for margin_ms in margins_ms: @@ -214,48 +203,59 @@ freq_min=1.0, freq_max=300.0, margin_ms=margin_ms, - ignore_low_freq_error=True + ignore_low_freq_error=True, ) recording_chunk = recording_chunk.save( format="memory", chunk_duration=chunk_duration, verbose=False, + progress_bar=False ) t_stop = time.perf_counter() - result_dict = { - "recording": recording_chunk, - "time": t_stop - t_start - } + result_dict = {"recording": recording_chunk, "time": t_stop - t_start} recordings_chunked[(margin_ms, chunk_duration)] = result_dict -# %% [markdown] +############################################################################## # Let's visualize the error for the "10s" chunks and different margins, centered around 30s (which is a chunk edge): -# %% fig, ax = plt.subplots(figsize=(10, 5)) trace_plotted = False +start_time = 15 # seconds +end_time = 45 # seconds +start_frame = int(start_time * recording_optimal.sampling_frequency) +end_frame = int(end_time * recording_optimal.sampling_frequency) +timestamps = recording_optimal.get_times()[start_frame:end_frame] for recording_key, recording_dict in recordings_chunked.items(): recording_chunk = recording_dict["recording"] margin, chunk = recording_key - start_frame = int(25 * recording_optimal.sampling_frequency) - end_frame = int(35 * recording_optimal.sampling_frequency) - traces_opt = recording_optimal.get_traces(start_frame=start_frame, end_frame=end_frame) - if not trace_plotted: - ax.plot(traces_opt, color="grey", label="traces", alpha=0.5) - trace_plotted = True + # only plot "10s" chunks if chunk != "10s": continue + traces_opt = recording_optimal.get_traces( + start_frame=start_frame, end_frame=end_frame + ) + if not trace_plotted: + ax.plot(timestamps, traces_opt, color="grey", label="traces", alpha=0.5) + trace_plotted = True diff = recording_optimal - recording_chunk traces_diff = diff.get_traces(start_frame=start_frame, end_frame=end_frame) - ax.plot(traces_diff, label=recording_key) - -ax.legend() - -# %% [markdown] -# For smaller chunk sizes, these artifact will happen more often. In addition, the margin "overhead" will make processing slower. -# Let's quantify these concepts by computing the overall absolute error with respect to the optimal case and processing time. + ax.plot(timestamps, traces_diff, label=f"Margin: {margin}") + for chunk in [20, 30, 40]: # chunk boundaries at 10s intervals + ax.axvline(x=chunk, color="red", linestyle="--", alpha=0.5) + +ax.set_xlabel("Time (s)") +ax.set_ylabel("Voltage ($\\mu V$)") +_ = ax.legend() + +############################################################################## +# From the plot, we can see that there is a very small error when the margin size is large (green), +# a larger error when the margin is smaller (orange) and a large error when the margin is small (blue). +# So we need large margins (compared to the chunk size) if we want accurate filtered. +# +# The artifacts do not depend on chunk size, but for smaller chunk sizes, these artifacts will happen more often. +# In addition, the margin "overhead" will make processing slower. Let's quantify these concepts by computing the +# overall absolute error with respect to the optimal case and processing time. -# %% trace_plotted = False traces_optimal = recording_optimal.get_traces() data = {"margin": [], "chunk": [], "error": [], "time": []} @@ -272,7 +272,9 @@ df = pd.DataFrame(data=data) -# %% +############################################################################## +# Now let's visualize the error and processing time for different margin and chunk size combinations + fig, axs = plt.subplots(ncols=2, figsize=(10, 5)) sns.barplot(data=data, x="margin", y="error", hue="chunk", ax=axs[0]) axs[0].set_yscale("log") @@ -280,11 +282,11 @@ axs[0].set_title("Error VS margin x chunk size") axs[1].set_title("Processing time VS margin x chunk size") - sns.despine(fig) -# %% [markdown] -# ## 4. Summary +############################################################################## +# Summary +# ------- # # 1. **Low-frequency filters require special care**: Filters with low cutoff frequencies (< 10 Hz) have long # impulse responses that require large margins to avoid edge artifacts. @@ -304,6 +306,7 @@ # and accuracy (larger chunks, fewer artifacts). For LFP analysis, accuracy should take priority. # # **When processing your own data:** +# # - If you have memory constraints, use the largest chunk size your system can handle # - Always verify your filtering parameters on a small test segment first # - Consider the lowest frequency component you want to preserve when setting margins diff --git a/doc/forhowto/plot_extract_lfps.py.md5 b/doc/forhowto/plot_extract_lfps.py.md5 new file mode 100644 index 0000000000..850f803ce2 --- /dev/null +++ b/doc/forhowto/plot_extract_lfps.py.md5 @@ -0,0 +1 @@ +fb59f45750a1df962d590b4f861b08eb diff --git a/doc/forhowto/plot_extract_lfps.rst b/doc/forhowto/plot_extract_lfps.rst new file mode 100644 index 0000000000..419714de2d --- /dev/null +++ b/doc/forhowto/plot_extract_lfps.rst @@ -0,0 +1,640 @@ + +.. DO NOT EDIT. +.. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. +.. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: +.. "forhowto/plot_extract_lfps.py" +.. LINE NUMBERS ARE GIVEN BELOW. + +.. only:: html + + .. note:: + :class: sphx-glr-download-link-note + + :ref:`Go to the end ` + to download the full example code. + +.. rst-class:: sphx-glr-example-title + +.. _sphx_glr_forhowto_plot_extract_lfps.py: + + +Extract LFPs +============ + +Understanding filtering artifacts and chunking when extracting LFPs + +Local Field Potentials (LFPs) are low-frequency signals (<300 Hz) that reflect the summed activity of many neurons. +Extracting LFPs from high-sampling-rate recordings requires bandpass filtering, but this can introduce artifacts +when not done carefully, especially when data is processed in chunks (for memory efficiency). + +This tutorial demonstrates: + +1. How to generate simulated LFP data +2. Common pitfalls when filtering with low cutoff frequencies +3. How chunking and margins affect filtering artifacts +4. Summary + +**Key takeaway**: For LFP extraction, use large chunks (30-60s) and large margins (several seconds) to minimize +edge artifacts, even though this is less memory-efficient. + +.. GENERATED FROM PYTHON SOURCE LINES 23-24 + +Import necessary modules + +.. GENERATED FROM PYTHON SOURCE LINES 24-38 + +.. code-block:: Python + + + import time + import numpy as np + import matplotlib.pyplot as plt + from pathlib import Path + import pandas as pd + import seaborn as sns + + import spikeinterface as si + import spikeinterface.extractors as se + import spikeinterface.preprocessing as spre + import spikeinterface.widgets as sw + from spikeinterface.core import generate_ground_truth_recording + + + + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 39-43 + +1. Generate simulated recording with low-frequency signals +----------------------------------------------------------- + +Let's create a simulated recording and add some low-frequency sinusoids that mimic LFP activity. + +.. GENERATED FROM PYTHON SOURCE LINES 43-56 + +.. code-block:: Python + + + # Generate a ground truth recording with spikes + # Use a higher sampling rate (30 kHz) to simulate raw neural data + recording, sorting = generate_ground_truth_recording( + durations=[300.0], # 300 s + sampling_frequency=30000.0, + num_channels=1, + num_units=4, + seed=2305, + ) + + print(recording) + + + + + +.. rst-class:: sphx-glr-script-out + + .. code-block:: none + + GroundTruthRecording (InjectTemplatesRecording): 1 channels - 30.0kHz - 1 segments + 9,000,000 samples - 300.00s (5.00 minutes) - float32 dtype - 34.33 MiB + + + + +.. GENERATED FROM PYTHON SOURCE LINES 57-58 + +Now let's add some low-frequency sinusoidal components to simulate LFP signals + +.. GENERATED FROM PYTHON SOURCE LINES 58-99 + +.. code-block:: Python + + + # Add low-frequency sinusoids with different frequencies and phases per channel + rng = np.random.default_rng(42) + num_channels = recording.get_num_channels() + lfp_signals = np.zeros( + (recording.get_num_samples(), recording.get_num_channels()) + ) + time_vector = recording.get_times() + + for ch in range(num_channels): + # Add multiple frequency components (theta, alpha, beta ranges) + # Theta-like: 4-8 Hz + freq_theta = 4 + rng.random() * 4 + phase_theta = rng.random() * 2 * np.pi + amp_theta = 50 + rng.random() * 50 + + # Alpha-like: 8-12 Hz + freq_alpha = 8 + rng.random() * 4 + phase_alpha = rng.random() * 2 * np.pi + amp_alpha = 30 + rng.random() * 30 + + # Beta-like: 12-30 Hz + freq_beta = 12 + rng.random() * 18 + phase_beta = rng.random() * 2 * np.pi + amp_beta = 20 + rng.random() * 20 + + lfp_signals[:, ch] = ( + amp_theta * np.sin(2 * np.pi * freq_theta * time_vector + phase_theta) + + amp_alpha * np.sin(2 * np.pi * freq_alpha * time_vector + phase_alpha) + + amp_beta * np.sin(2 * np.pi * freq_beta * time_vector + phase_beta) + ) + + # Create a recording with the added LFP signals + recording_lfp = si.NumpyRecording( + traces_list=[lfp_signals], + sampling_frequency=recording.sampling_frequency, + channel_ids=recording.channel_ids, + ) + recording_with_lfp = recording + recording_lfp + + + + + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 100-101 + +Let's visualize a short segment of the signal + +.. GENERATED FROM PYTHON SOURCE LINES 101-104 + +.. code-block:: Python + + + _ = sw.plot_traces(recording_with_lfp, time_range=[0, 3]) + + + + +.. image-sg:: /forhowto/images/sphx_glr_plot_extract_lfps_001.png + :alt: plot extract lfps + :srcset: /forhowto/images/sphx_glr_plot_extract_lfps_001.png + :class: sphx-glr-single-img + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 105-110 + +2. Filtering with low cutoff frequencies: the problem +------------------------------------------------------ + +Now let's try to extract LFPs using a bandpass filter with a low highpass cutoff (1 Hz). +This will demonstrate a common issue. + +.. GENERATED FROM PYTHON SOURCE LINES 110-119 + +.. code-block:: Python + + + # Try to filter with 1 Hz highpass + try: + recording_lfp_1hz = spre.bandpass_filter( + recording_with_lfp, freq_min=1.0, freq_max=300.0 + ) + except Exception as e: + print(f"Error message:\n{str(e)}") + + + + + +.. rst-class:: sphx-glr-script-out + + .. code-block:: none + + Error message: + The freq_min (1.0 Hz) is too low and may cause artifacts during chunk processing. You can set 'ignore_low_freq_error=True' to bypass this error, but make sure you understand the implications. It is recommended to use large chunks when processing/saving your filtered recording to minimize IO overhead.Refer to this documentation on LFP filtering and chunking artifacts for more details: https://spikeinterface.readthedocs.io/en/latest/how-to/extract_lfps.html. + + + + +.. GENERATED FROM PYTHON SOURCE LINES 120-128 + +**Why does this fail?** + +The error occurs because by default in SpikeInterface when highpass filtering below 100 Hz. +Filters with very low cutoff frequencies have long impulse responses, which require larger margins to avoid edge artifacts between chunks. + +The filter length (and required margin) scales inversely with the highpass frequency. A 1 Hz highpass +filter requires a margin of several seconds, while a 300 Hz highpass (for spike extraction) only needs +a few milliseconds. + +.. GENERATED FROM PYTHON SOURCE LINES 130-140 + +3. Understanding chunking and margins +-------------------------------------- + +SpikeInterface processes recordings in chunks to handle large datasets efficiently. Each chunk needs +a "margin" (extra samples at the edges) to avoid edge artifacts when filtering. Let's demonstrate +this by saving the filtered data with different chunking strategies. + +**This error is to inform the user that extra care should be used when dealing with LFP signals!** + +We can ignore this error, but let's make sure we understand what it's happening. + +.. GENERATED FROM PYTHON SOURCE LINES 140-146 + +.. code-block:: Python + + + # We can ignore this error, but let's see what is happening + recording_filt = spre.bandpass_filter( + recording_with_lfp, freq_min=1.0, freq_max=300.0, ignore_low_freq_error=True + ) + + + + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 147-150 + +When retrieving traces, extra samples will be retrieved at the left and right edges. +By default, the filter function will set a margin to 5x the sampling period associated to `freq_min`. +So for a 1 Hz cutoff frequency, the margin will be 5 seconds! + +.. GENERATED FROM PYTHON SOURCE LINES 150-154 + +.. code-block:: Python + + + margin_in_s = recording_filt.margin_samples / recording_lfp.sampling_frequency + print(f"Margin: {margin_in_s} s") + + + + + +.. rst-class:: sphx-glr-script-out + + .. code-block:: none + + Margin: 5.0 s + + + + +.. GENERATED FROM PYTHON SOURCE LINES 155-157 + +This effectively means that if we plot 1-s snippet of traces, a total of 11 s will actually be read and filtered. +Note that the margin can be overridden with the `margin_ms` argument, but we do not recommend changing it. + +.. GENERATED FROM PYTHON SOURCE LINES 157-160 + +.. code-block:: Python + + + _ = sw.plot_traces(recording_filt, time_range=[20, 21]) + + + + +.. image-sg:: /forhowto/images/sphx_glr_plot_extract_lfps_002.png + :alt: plot extract lfps + :srcset: /forhowto/images/sphx_glr_plot_extract_lfps_002.png + :class: sphx-glr-single-img + + +.. rst-class:: sphx-glr-script-out + + .. code-block:: none + + /home/alessio/Documents/Codes/spike_sorting/spikeinterface/spikeinterface/src/spikeinterface/preprocessing/filter.py:169: UserWarning: The margin size (150000 samples) is more than 20% of the chunk size 30000 samples. This may lead to performance bottlenecks when chunking. Consider increasing the chunk size to minimize margin overhead. + warnings.warn( + + + + +.. GENERATED FROM PYTHON SOURCE LINES 161-165 + +A warning tells us that what we are doing is not optimized, since in order to get the requested traces +the margin "overhead" is very large. + +If we ask or plot longer snippets, the warning is not displayed. + +.. GENERATED FROM PYTHON SOURCE LINES 165-168 + +.. code-block:: Python + + + _ = sw.plot_traces(recording_filt, time_range=[20, 80]) + + + + +.. image-sg:: /forhowto/images/sphx_glr_plot_extract_lfps_003.png + :alt: plot extract lfps + :srcset: /forhowto/images/sphx_glr_plot_extract_lfps_003.png + :class: sphx-glr-single-img + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 169-174 + +4. Quantification and visualization of the artifacts +----------------------------------------------------- + +Let's extract the traces and visualize the differences between chunking strategies. +We'll focus on the chunk boundaries where artifacts appear. + +.. GENERATED FROM PYTHON SOURCE LINES 174-178 + +.. code-block:: Python + + + margins_ms = [100, 1000, 5000] + chunk_durations = ["1s", "10s", "30s"] + + + + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 179-183 + +The best we can do is to save the full recording in one chunk. This will cause no artifacts and chunking effects, +but in practice it's not possible due to the duration and number of channels of most setups. + +Since in this toy case we have a single channel 5-min recording, we can use this as "optimal". + +.. GENERATED FROM PYTHON SOURCE LINES 183-192 + +.. code-block:: Python + + + recording_optimal = recording_filt.save( + format="memory", + chunk_duration="1000s", + progress_bar=False + ) + + print(recording_optimal) + + + + + +.. rst-class:: sphx-glr-script-out + + .. code-block:: none + + SharedMemoryRecording: 1 channels - 30.0kHz - 1 segments - 9,000,000 samples + 300.00s (5.00 minutes) - float32 dtype - 34.33 MiB + + + + +.. GENERATED FROM PYTHON SOURCE LINES 193-194 + +Now we can do the same with our various options: + +.. GENERATED FROM PYTHON SOURCE LINES 194-218 + +.. code-block:: Python + + + recordings_chunked = {} + + for margin_ms in margins_ms: + for chunk_duration in chunk_durations: + print(f"Margin ms: {margin_ms} - Chunk duration: {chunk_duration}") + t_start = time.perf_counter() + recording_chunk = spre.bandpass_filter( + recording_with_lfp, + freq_min=1.0, + freq_max=300.0, + margin_ms=margin_ms, + ignore_low_freq_error=True, + ) + recording_chunk = recording_chunk.save( + format="memory", + chunk_duration=chunk_duration, + verbose=False, + progress_bar=False + ) + t_stop = time.perf_counter() + result_dict = {"recording": recording_chunk, "time": t_stop - t_start} + recordings_chunked[(margin_ms, chunk_duration)] = result_dict + + + + + +.. rst-class:: sphx-glr-script-out + + .. code-block:: none + + Margin ms: 100 - Chunk duration: 1s + /home/alessio/Documents/Codes/spike_sorting/spikeinterface/spikeinterface/src/spikeinterface/preprocessing/filter.py:458: UserWarning: The provided margin_ms (100 ms) is smaller than the recommended margin for the given freq_min (1.0 Hz). This may lead to artifacts at the edges of chunks during processing. Consider increasing the margin_ms to at least 5000.0 ms. + warnings.warn( + Margin ms: 100 - Chunk duration: 10s + Margin ms: 100 - Chunk duration: 30s + Margin ms: 1000 - Chunk duration: 1s + /home/alessio/Documents/Codes/spike_sorting/spikeinterface/spikeinterface/src/spikeinterface/preprocessing/filter.py:458: UserWarning: The provided margin_ms (1000 ms) is smaller than the recommended margin for the given freq_min (1.0 Hz). This may lead to artifacts at the edges of chunks during processing. Consider increasing the margin_ms to at least 5000.0 ms. + warnings.warn( + /home/alessio/Documents/Codes/spike_sorting/spikeinterface/spikeinterface/src/spikeinterface/preprocessing/filter.py:169: UserWarning: The margin size (30000 samples) is more than 20% of the chunk size 30000 samples. This may lead to performance bottlenecks when chunking. Consider increasing the chunk size to minimize margin overhead. + warnings.warn( + Margin ms: 1000 - Chunk duration: 10s + Margin ms: 1000 - Chunk duration: 30s + Margin ms: 5000 - Chunk duration: 1s + Margin ms: 5000 - Chunk duration: 10s + /home/alessio/Documents/Codes/spike_sorting/spikeinterface/spikeinterface/src/spikeinterface/preprocessing/filter.py:169: UserWarning: The margin size (150000 samples) is more than 20% of the chunk size 300000 samples. This may lead to performance bottlenecks when chunking. Consider increasing the chunk size to minimize margin overhead. + warnings.warn( + Margin ms: 5000 - Chunk duration: 30s + + + + +.. GENERATED FROM PYTHON SOURCE LINES 219-220 + +Let's visualize the error for the "10s" chunks and different margins, centered around 30s (which is a chunk edge): + +.. GENERATED FROM PYTHON SOURCE LINES 220-250 + +.. code-block:: Python + + + fig, ax = plt.subplots(figsize=(10, 5)) + trace_plotted = False + start_time = 15 # seconds + end_time = 45 # seconds + start_frame = int(start_time * recording_optimal.sampling_frequency) + end_frame = int(end_time * recording_optimal.sampling_frequency) + timestamps = recording_optimal.get_times()[start_frame:end_frame] + for recording_key, recording_dict in recordings_chunked.items(): + recording_chunk = recording_dict["recording"] + margin, chunk = recording_key + # only plot "10s" chunks + if chunk != "10s": + continue + traces_opt = recording_optimal.get_traces( + start_frame=start_frame, end_frame=end_frame + ) + if not trace_plotted: + ax.plot(timestamps, traces_opt, color="grey", label="traces", alpha=0.5) + trace_plotted = True + diff = recording_optimal - recording_chunk + traces_diff = diff.get_traces(start_frame=start_frame, end_frame=end_frame) + ax.plot(timestamps, traces_diff, label=f"Margin: {margin}") + for chunk in [20, 30, 40]: # chunk boundaries at 10s intervals + ax.axvline(x=chunk, color="red", linestyle="--", alpha=0.5) + + ax.set_xlabel("Time (s)") + ax.set_ylabel("Voltage ($\\mu V$)") + _ = ax.legend() + + + + +.. image-sg:: /forhowto/images/sphx_glr_plot_extract_lfps_004.png + :alt: plot extract lfps + :srcset: /forhowto/images/sphx_glr_plot_extract_lfps_004.png + :class: sphx-glr-single-img + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 251-258 + +From the plot, we can see that there is a very small error when the margin size is large (green), +a larger error when the margin is smaller (orange) and a large error when the margin is small (blue). +So we need large margins (compared to the chunk size) if we want accurate filtered. + +The artifacts do not depend on chunk size, but for smaller chunk sizes, these artifacts will happen more often. +In addition, the margin "overhead" will make processing slower. Let's quantify these concepts by computing the +overall absolute error with respect to the optimal case and processing time. + +.. GENERATED FROM PYTHON SOURCE LINES 258-275 + +.. code-block:: Python + + + trace_plotted = False + traces_optimal = recording_optimal.get_traces() + data = {"margin": [], "chunk": [], "error": [], "time": []} + for recording_key, recording_dict in recordings_chunked.items(): + recording_chunk = recording_dict["recording"] + time = recording_dict["time"] + margin, chunk = recording_key + traces_chunk = recording_chunk.get_traces() + error = np.sum(np.abs(traces_optimal - traces_chunk)) + data["margin"].append(margin) + data["chunk"].append(chunk) + data["error"].append(error) + data["time"].append(time) + + df = pd.DataFrame(data=data) + + + + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 276-277 + +Now let's visualize the error and processing time for different margin and chunk size combinations + +.. GENERATED FROM PYTHON SOURCE LINES 277-287 + +.. code-block:: Python + + + fig, axs = plt.subplots(ncols=2, figsize=(10, 5)) + sns.barplot(data=data, x="margin", y="error", hue="chunk", ax=axs[0]) + axs[0].set_yscale("log") + sns.barplot(data=data, x="margin", y="time", hue="chunk", ax=axs[1]) + axs[0].set_title("Error VS margin x chunk size") + axs[1].set_title("Processing time VS margin x chunk size") + + sns.despine(fig) + + + + +.. image-sg:: /forhowto/images/sphx_glr_plot_extract_lfps_005.png + :alt: Error VS margin x chunk size, Processing time VS margin x chunk size + :srcset: /forhowto/images/sphx_glr_plot_extract_lfps_005.png + :class: sphx-glr-single-img + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 288-314 + +Summary +------- + +1. **Low-frequency filters require special care**: Filters with low cutoff frequencies (< 10 Hz) have long + impulse responses that require large margins to avoid edge artifacts. + +2. **Chunking artifacts are real**: When processing data in chunks, insufficient margins lead to visible + discontinuities and errors at chunk boundaries. + +3. **The solution: large chunks and large margins**: For LFP extraction (1-300 Hz), use: + - Chunk size: 30-60 seconds + - Margin size: 5 seconds (for 1 Hz highpass) (**use defaults!**) + - This is less memory-efficient but more accurate + +4. **Downsample after filtering**: After bandpass filtering, downsample to reduce data size (e.g., to 1-2.5 kHz + for 300 Hz max frequency). + +5. **Trade-offs**: There's always a trade-off between computational efficiency (smaller chunks, less memory) + and accuracy (larger chunks, fewer artifacts). For LFP analysis, accuracy should take priority. + +**When processing your own data:** + +- If you have memory constraints, use the largest chunk size your system can handle +- Always verify your filtering parameters on a small test segment first +- Consider the lowest frequency component you want to preserve when setting margins +- Save the processed LFP data to disk to avoid recomputing + + +.. rst-class:: sphx-glr-timing + + **Total running time of the script:** (0 minutes 10.342 seconds) + + +.. _sphx_glr_download_forhowto_plot_extract_lfps.py: + +.. only:: html + + .. container:: sphx-glr-footer sphx-glr-footer-example + + .. container:: sphx-glr-download sphx-glr-download-jupyter + + :download:`Download Jupyter notebook: plot_extract_lfps.ipynb ` + + .. container:: sphx-glr-download sphx-glr-download-python + + :download:`Download Python source code: plot_extract_lfps.py ` + + .. container:: sphx-glr-download sphx-glr-download-zip + + :download:`Download zipped: plot_extract_lfps.zip ` + + +.. only:: html + + .. rst-class:: sphx-glr-signature + + `Gallery generated by Sphinx-Gallery `_ diff --git a/doc/forhowto/plot_extract_lfps.zip b/doc/forhowto/plot_extract_lfps.zip new file mode 100644 index 0000000000000000000000000000000000000000..091d42cb5cd772b49a3a3fb9b31a617b46e30000 GIT binary patch literal 30149 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 J|8^Gq^#6UgKNtW2 literal 0 HcmV?d00001 diff --git a/doc/forhowto/plot_working_with_tetrodes.codeobj.json b/doc/forhowto/plot_working_with_tetrodes.codeobj.json new file mode 100644 index 0000000000..37675b005a --- /dev/null +++ b/doc/forhowto/plot_working_with_tetrodes.codeobj.json @@ -0,0 +1,743 @@ +{ + "ProbeGroup": [ + { + "is_class": true, + "is_explicit": false, + "module": "probeinterface.probegroup", + "module_short": "probeinterface", + "name": "ProbeGroup" + }, + { + "is_class": true, + "is_explicit": false, + "module": "probeinterface", + "module_short": "probeinterface", + "name": "ProbeGroup" + }, + { + "is_class": false, + "is_explicit": false, + "module": "probeinterface", + "module_short": "probeinterface", + "name": "ProbeGroup" + } + ], + "_": [ + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core.numpyextractors", + "module_short": "spikeinterface", + "name": "NumpySorting" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core", + "module_short": "spikeinterface", + "name": "NumpySorting" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "NumpySorting" + } + ], + "generate_ground_truth_recording": [ + { + "is_class": false, + "is_explicit": false, + "module": "builtins", + "module_short": "builtins", + "name": "function" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "generate_ground_truth_recording" + } + ], + "generate_tetrode": [ + { + "is_class": false, + "is_explicit": false, + "module": "builtins", + "module_short": "builtins", + "name": "function" + }, + { + "is_class": false, + "is_explicit": false, + "module": "probeinterface", + "module_short": "probeinterface", + "name": "generate_tetrode" + } + ], + "grouped_recordings": [ + { + "is_class": false, + "is_explicit": false, + "module": "builtins", + "module_short": "builtins", + "name": "dict" + } + ], + "plot_probe_map": [ + { + "is_class": true, + "is_explicit": false, + "module": "spikeinterface.widgets.probe_map", + "module_short": "spikeinterface.widgets", + "name": "ProbeMapWidget" + }, + { + "is_class": true, + "is_explicit": false, + "module": "spikeinterface.widgets", + "module_short": "spikeinterface.widgets", + "name": "ProbeMapWidget" + }, + { + "is_class": true, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "ProbeMapWidget" + }, + { + "is_class": true, + "is_explicit": false, + "module": "spikeinterface.widgets.base", + "module_short": "spikeinterface.widgets.base", + "name": "BaseWidget" + }, + { + "is_class": true, + "is_explicit": false, + "module": "spikeinterface.widgets", + "module_short": "spikeinterface.widgets", + "name": "BaseWidget" + }, + { + "is_class": true, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "BaseWidget" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.widgets", + "module_short": "spikeinterface.widgets", + "name": "plot_probe_map" + } + ], + "plot_traces": [ + { + "is_class": true, + "is_explicit": false, + "module": "spikeinterface.widgets.traces", + "module_short": "spikeinterface.widgets", + "name": "TracesWidget" + }, + { + "is_class": true, + "is_explicit": false, + "module": "spikeinterface.widgets", + "module_short": "spikeinterface.widgets", + "name": "TracesWidget" + }, + { + "is_class": true, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "TracesWidget" + }, + { + "is_class": true, + "is_explicit": false, + "module": "spikeinterface.widgets.base", + "module_short": "spikeinterface.widgets.base", + "name": "BaseWidget" + }, + { + "is_class": true, + "is_explicit": false, + "module": "spikeinterface.widgets", + "module_short": "spikeinterface.widgets", + "name": "BaseWidget" + }, + { + "is_class": true, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "BaseWidget" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.widgets", + "module_short": "spikeinterface.widgets", + "name": "plot_traces" + } + ], + "preprocessed_recording": [ + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.preprocessing.filter", + "module_short": "spikeinterface.preprocessing.filter", + "name": "BandpassFilterRecording" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.preprocessing", + "module_short": "spikeinterface.preprocessing", + "name": "BandpassFilterRecording" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "BandpassFilterRecording" + } + ], + "recording": [ + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core.generate", + "module_short": "spikeinterface", + "name": "InjectTemplatesRecording" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core", + "module_short": "spikeinterface", + "name": "InjectTemplatesRecording" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "InjectTemplatesRecording" + } + ], + "recording.set_probegroup": [ + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core.generate", + "module_short": "spikeinterface", + "name": "InjectTemplatesRecording.set_probegroup" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core", + "module_short": "spikeinterface", + "name": "InjectTemplatesRecording.set_probegroup" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "InjectTemplatesRecording.set_probegroup" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core.baserecording", + "module_short": "spikeinterface", + "name": "BaseRecording.set_probegroup" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core", + "module_short": "spikeinterface", + "name": "BaseRecording.set_probegroup" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "BaseRecording.set_probegroup" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core.baserecordingsnippets", + "module_short": "spikeinterface", + "name": "BaseRecordingSnippets.set_probegroup" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core", + "module_short": "spikeinterface", + "name": "BaseRecordingSnippets.set_probegroup" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "BaseRecordingSnippets.set_probegroup" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core.base", + "module_short": "spikeinterface.core.base", + "name": "BaseExtractor.set_probegroup" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core", + "module_short": "spikeinterface.core", + "name": "BaseExtractor.set_probegroup" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "BaseExtractor.set_probegroup" + } + ], + "recording_good_channels": [ + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.preprocessing.detect_bad_channels", + "module_short": "spikeinterface.preprocessing.detect_bad_channels", + "name": "DetectAndRemoveBadChannelsRecording" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.preprocessing", + "module_short": "spikeinterface.preprocessing", + "name": "DetectAndRemoveBadChannelsRecording" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "DetectAndRemoveBadChannelsRecording" + } + ], + "recording_good_channels.get_property": [ + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.preprocessing.detect_bad_channels", + "module_short": "spikeinterface.preprocessing.detect_bad_channels", + "name": "DetectAndRemoveBadChannelsRecording.get_property" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.preprocessing", + "module_short": "spikeinterface.preprocessing", + "name": "DetectAndRemoveBadChannelsRecording.get_property" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "DetectAndRemoveBadChannelsRecording.get_property" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core.channelslice", + "module_short": "spikeinterface", + "name": "ChannelSliceRecording.get_property" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core", + "module_short": "spikeinterface", + "name": "ChannelSliceRecording.get_property" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "ChannelSliceRecording.get_property" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core.baserecording", + "module_short": "spikeinterface", + "name": "BaseRecording.get_property" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core", + "module_short": "spikeinterface", + "name": "BaseRecording.get_property" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "BaseRecording.get_property" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core.baserecordingsnippets", + "module_short": "spikeinterface", + "name": "BaseRecordingSnippets.get_property" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core", + "module_short": "spikeinterface", + "name": "BaseRecordingSnippets.get_property" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "BaseRecordingSnippets.get_property" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core.base", + "module_short": "spikeinterface.core.base", + "name": "BaseExtractor.get_property" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core", + "module_short": "spikeinterface.core", + "name": "BaseExtractor.get_property" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "BaseExtractor.get_property" + } + ], + "recording_good_channels.split_by": [ + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.preprocessing.detect_bad_channels", + "module_short": "spikeinterface.preprocessing.detect_bad_channels", + "name": "DetectAndRemoveBadChannelsRecording.split_by" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.preprocessing", + "module_short": "spikeinterface.preprocessing", + "name": "DetectAndRemoveBadChannelsRecording.split_by" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "DetectAndRemoveBadChannelsRecording.split_by" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core.channelslice", + "module_short": "spikeinterface", + "name": "ChannelSliceRecording.split_by" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core", + "module_short": "spikeinterface", + "name": "ChannelSliceRecording.split_by" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "ChannelSliceRecording.split_by" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core.baserecording", + "module_short": "spikeinterface", + "name": "BaseRecording.split_by" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core", + "module_short": "spikeinterface", + "name": "BaseRecording.split_by" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "BaseRecording.split_by" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core.baserecordingsnippets", + "module_short": "spikeinterface", + "name": "BaseRecordingSnippets.split_by" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core", + "module_short": "spikeinterface", + "name": "BaseRecordingSnippets.split_by" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "BaseRecordingSnippets.split_by" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core.base", + "module_short": "spikeinterface.core.base", + "name": "BaseExtractor.split_by" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core", + "module_short": "spikeinterface.core", + "name": "BaseExtractor.split_by" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "BaseExtractor.split_by" + } + ], + "recording_with_probe": [ + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core.generate", + "module_short": "spikeinterface", + "name": "InjectTemplatesRecording" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.core", + "module_short": "spikeinterface", + "name": "InjectTemplatesRecording" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface", + "module_short": "spikeinterface", + "name": "InjectTemplatesRecording" + } + ], + "spre.bandpass_filter": [ + { + "is_class": false, + "is_explicit": false, + "module": "builtins", + "module_short": "builtins", + "name": "function" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.preprocessing", + "module_short": "spikeinterface.preprocessing", + "name": "bandpass_filter" + } + ], + "spre.detect_and_remove_bad_channels": [ + { + "is_class": false, + "is_explicit": false, + "module": "builtins", + "module_short": "builtins", + "name": "function" + }, + { + "is_class": false, + "is_explicit": false, + "module": "spikeinterface.preprocessing", + "module_short": "spikeinterface.preprocessing", + "name": "detect_and_remove_bad_channels" + } + ], + "tetrode_1": [ + { + "is_class": false, + "is_explicit": false, + "module": "probeinterface.probe", + "module_short": "probeinterface", + "name": "Probe" + }, + { + "is_class": false, + "is_explicit": false, + "module": "probeinterface", + "module_short": "probeinterface", + "name": "Probe" + } + ], + "tetrode_1.create_auto_shape": [ + { + "is_class": false, + "is_explicit": false, + "module": "probeinterface.probe", + "module_short": "probeinterface", + "name": "Probe.create_auto_shape" + }, + { + "is_class": false, + "is_explicit": false, + "module": "probeinterface", + "module_short": "probeinterface", + "name": "Probe.create_auto_shape" + } + ], + "tetrode_2": [ + { + "is_class": false, + "is_explicit": false, + "module": "probeinterface.probe", + "module_short": "probeinterface", + "name": "Probe" + }, + { + "is_class": false, + "is_explicit": false, + "module": "probeinterface", + "module_short": "probeinterface", + "name": "Probe" + } + ], + "tetrode_2.create_auto_shape": [ + { + "is_class": false, + "is_explicit": false, + "module": "probeinterface.probe", + "module_short": "probeinterface", + "name": "Probe.create_auto_shape" + }, + { + "is_class": false, + "is_explicit": false, + "module": "probeinterface", + "module_short": "probeinterface", + "name": "Probe.create_auto_shape" + } + ], + "tetrode_2.move": [ + { + "is_class": false, + "is_explicit": false, + "module": "probeinterface.probe", + "module_short": "probeinterface", + "name": "Probe.move" + }, + { + "is_class": false, + "is_explicit": false, + "module": "probeinterface", + "module_short": "probeinterface", + "name": "Probe.move" + } + ], + "tetrode_group": [ + { + "is_class": false, + "is_explicit": false, + "module": "probeinterface.probegroup", + "module_short": "probeinterface", + "name": "ProbeGroup" + }, + { + "is_class": false, + "is_explicit": false, + "module": "probeinterface", + "module_short": "probeinterface", + "name": "ProbeGroup" + } + ], + "tetrode_group.add_probe": [ + { + "is_class": false, + "is_explicit": false, + "module": "probeinterface.probegroup", + "module_short": "probeinterface", + "name": "ProbeGroup.add_probe" + }, + { + "is_class": false, + "is_explicit": false, + "module": "probeinterface", + "module_short": "probeinterface", + "name": "ProbeGroup.add_probe" + } + ], + "tetrode_group.set_global_device_channel_indices": [ + { + "is_class": false, + "is_explicit": false, + "module": "probeinterface.probegroup", + "module_short": "probeinterface", + "name": "ProbeGroup.set_global_device_channel_indices" + }, + { + "is_class": false, + "is_explicit": false, + "module": "probeinterface", + "module_short": "probeinterface", + "name": "ProbeGroup.set_global_device_channel_indices" + } + ] +} diff --git a/doc/forhowto/plot_working_with_tetrodes.ipynb b/doc/forhowto/plot_working_with_tetrodes.ipynb new file mode 100644 index 0000000000..5e27d20069 --- /dev/null +++ b/doc/forhowto/plot_working_with_tetrodes.ipynb @@ -0,0 +1,194 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n# Work with tetrodes\n\nTetrodes are a common recording method for electrophysiological data. It is also common\nto record from several tetrodes at the same time. In this 'how to' we'll see how to\nwork with data from two tetrodes, each with four channels.\n\nWe'll start by importing some functions we'll use in this How To guide\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "import spikeinterface.preprocessing as spre\nfrom spikeinterface.widgets import plot_traces, plot_probe_map\nfrom spikeinterface import generate_ground_truth_recording\n\nfrom probeinterface import generate_tetrode, ProbeGroup" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In practice, you would read in your raw data from a file. Instead, we will generate a\nrecording with eight channels. We can also set a duration, number of units and\nsampling frequency.\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "recording, _ = generate_ground_truth_recording(\n durations = [60], # make the recording 60s long\n sampling_frequency=30_000,\n num_channels=8,\n num_units=10,\n)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We now need to define the probe. This will tell the recording which channels came from\nwhich tetrode. To do this, we will use the :code:`generate_tetrode` function from :code:`ProbeInterface`\nto generate two 4-channel probes (representing one tetrode each). In our case, since we\ndon't know the relative distances between the tetrodes, we will move the second\ntetrode away from the first by 100 microns. This is just so we can visualize the\nresults more easily. Eventually, we will sort each tetrode separately, so their\nrelative distance won't affect the results.\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Technically, we will add each tetrode to a :code:`ProbeGroup`. Read more in the ProbeInterface\n# docs.\n\n# Create each individual tetrode\ntetrode_1 = generate_tetrode()\ntetrode_1.create_auto_shape()\n\ntetrode_2 = generate_tetrode()\ntetrode_2.move([100, 0])\ntetrode_2.create_auto_shape()\n\n# Add the two tetrodes to a ProbeGroup\ntetrode_group = ProbeGroup()\ntetrode_group.add_probe(tetrode_1)\ntetrode_group.add_probe(tetrode_2)\n\n# Now we need to \"wire\" our tetrodes to ensure that each contact\n# can be associated with the correct channel when we attach it\n# to the recording. In this example we are just using `range`\n# but see ProbeInterface for more tutorials on wiring\ntetrode_group.set_global_device_channel_indices(range(8))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can now attach the :code:`tetrode_group` to our recording. To check if this worked, we'll\nplot the probe map\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "recording_with_probe = recording.set_probegroup(tetrode_group)\nplot_probe_map(recording_with_probe)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Looks good! Now that the recording is aware of the probe geometry, we can\nbegin a standard spike sorting pipeline. First, we can apply preprocessing.\nNote that we apply this preprocessing on the entire bundle of tetrodes.\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "preprocessed_recording = spre.bandpass_filter(recording_with_probe)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "WARNING: a very common preprocessing step is to apply a common median\nreference. This subtracts the median signal from all channels to help\nremove noise. However, for a tetrode, a spike is often seen on all\nchannels. So removing the median can remove the entire spike!\nThis is still a danger if you have two tetrodes in a bundle, which\nmight pick up the same spike, but becomes less dangerous\nas the number of tetrodes in your bundle increases.\n\nTetrodes often have dead channels, so it is advised to try and detect\nand remove these. For tetrodes, we should use a detection method which\ndoesn't depend on the channel locations such as std or mad:\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "recording_good_channels = spre.detect_and_remove_bad_channels(\n preprocessed_recording,\n method = \"std\",\n)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "It can be a good idea to sort your tetrode data separately for each tetrode.\nWhen we use :code:`set_probegroup`, the channels are automatically\nlabelled by which probe in the probe group they belong to. We can access\nthis labeling using the \"group\" property.\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "print(recording_good_channels.get_property(\"group\"))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can then use this information to split the recording by the group property:\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "grouped_recordings = recording_good_channels.split_by('group')\nprint(grouped_recordings)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now that we've got preprocess, clean data. Let's take a look at a\nsnippet of data from the first group:\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "plot_traces(grouped_recordings[0])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Beautiful! We are now ready to sort. To read more about sorting by group, see\n`sorting-by-channel-group`. Note that many modern sorters are designed\nto sort data from high-density probes and will fail for tetrodes. Please read\neach spike sorter's documentation to find out if it is appropriate for tetrodes.\n\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.13.2" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/examples/tutorials/forhowto/plot_1_working_with_tetrodes.py b/doc/forhowto/plot_working_with_tetrodes.py similarity index 100% rename from examples/tutorials/forhowto/plot_1_working_with_tetrodes.py rename to doc/forhowto/plot_working_with_tetrodes.py diff --git a/doc/forhowto/plot_working_with_tetrodes.py.md5 b/doc/forhowto/plot_working_with_tetrodes.py.md5 new file mode 100644 index 0000000000..b6de93f1f2 --- /dev/null +++ b/doc/forhowto/plot_working_with_tetrodes.py.md5 @@ -0,0 +1 @@ +f828444cacd54f1e64ce26991cd1f9d6 diff --git a/doc/forhowto/plot_working_with_tetrodes.rst b/doc/forhowto/plot_working_with_tetrodes.rst new file mode 100644 index 0000000000..57ad57b03f --- /dev/null +++ b/doc/forhowto/plot_working_with_tetrodes.rst @@ -0,0 +1,319 @@ + +.. DO NOT EDIT. +.. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. +.. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: +.. "forhowto/plot_working_with_tetrodes.py" +.. LINE NUMBERS ARE GIVEN BELOW. + +.. only:: html + + .. note:: + :class: sphx-glr-download-link-note + + :ref:`Go to the end ` + to download the full example code. + +.. rst-class:: sphx-glr-example-title + +.. _sphx_glr_forhowto_plot_working_with_tetrodes.py: + + +Work with tetrodes +================== + +Tetrodes are a common recording method for electrophysiological data. It is also common +to record from several tetrodes at the same time. In this 'how to' we'll see how to +work with data from two tetrodes, each with four channels. + +We'll start by importing some functions we'll use in this How To guide + +.. GENERATED FROM PYTHON SOURCE LINES 11-18 + +.. code-block:: Python + + + import spikeinterface.preprocessing as spre + from spikeinterface.widgets import plot_traces, plot_probe_map + from spikeinterface import generate_ground_truth_recording + + from probeinterface import generate_tetrode, ProbeGroup + + + + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 19-22 + +In practice, you would read in your raw data from a file. Instead, we will generate a +recording with eight channels. We can also set a duration, number of units and +sampling frequency. + +.. GENERATED FROM PYTHON SOURCE LINES 22-30 + +.. code-block:: Python + + + recording, _ = generate_ground_truth_recording( + durations = [60], # make the recording 60s long + sampling_frequency=30_000, + num_channels=8, + num_units=10, + ) + + + + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 31-38 + +We now need to define the probe. This will tell the recording which channels came from +which tetrode. To do this, we will use the :code:`generate_tetrode` function from :code:`ProbeInterface` +to generate two 4-channel probes (representing one tetrode each). In our case, since we +don't know the relative distances between the tetrodes, we will move the second +tetrode away from the first by 100 microns. This is just so we can visualize the +results more easily. Eventually, we will sort each tetrode separately, so their +relative distance won't affect the results. + +.. GENERATED FROM PYTHON SOURCE LINES 38-61 + +.. code-block:: Python + + + # Technically, we will add each tetrode to a :code:`ProbeGroup`. Read more in the ProbeInterface + # docs. + + # Create each individual tetrode + tetrode_1 = generate_tetrode() + tetrode_1.create_auto_shape() + + tetrode_2 = generate_tetrode() + tetrode_2.move([100, 0]) + tetrode_2.create_auto_shape() + + # Add the two tetrodes to a ProbeGroup + tetrode_group = ProbeGroup() + tetrode_group.add_probe(tetrode_1) + tetrode_group.add_probe(tetrode_2) + + # Now we need to "wire" our tetrodes to ensure that each contact + # can be associated with the correct channel when we attach it + # to the recording. In this example we are just using `range` + # but see ProbeInterface for more tutorials on wiring + tetrode_group.set_global_device_channel_indices(range(8)) + + + + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 62-64 + +We can now attach the :code:`tetrode_group` to our recording. To check if this worked, we'll +plot the probe map + +.. GENERATED FROM PYTHON SOURCE LINES 64-68 + +.. code-block:: Python + + + recording_with_probe = recording.set_probegroup(tetrode_group) + plot_probe_map(recording_with_probe) + + + + +.. image-sg:: /forhowto/images/sphx_glr_plot_working_with_tetrodes_001.png + :alt: plot working with tetrodes + :srcset: /forhowto/images/sphx_glr_plot_working_with_tetrodes_001.png + :class: sphx-glr-single-img + + +.. rst-class:: sphx-glr-script-out + + .. code-block:: none + + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 69-72 + +Looks good! Now that the recording is aware of the probe geometry, we can +begin a standard spike sorting pipeline. First, we can apply preprocessing. +Note that we apply this preprocessing on the entire bundle of tetrodes. + +.. GENERATED FROM PYTHON SOURCE LINES 72-75 + +.. code-block:: Python + + + preprocessed_recording = spre.bandpass_filter(recording_with_probe) + + + + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 76-87 + +WARNING: a very common preprocessing step is to apply a common median +reference. This subtracts the median signal from all channels to help +remove noise. However, for a tetrode, a spike is often seen on all +channels. So removing the median can remove the entire spike! +This is still a danger if you have two tetrodes in a bundle, which +might pick up the same spike, but becomes less dangerous +as the number of tetrodes in your bundle increases. + +Tetrodes often have dead channels, so it is advised to try and detect +and remove these. For tetrodes, we should use a detection method which +doesn't depend on the channel locations such as std or mad: + +.. GENERATED FROM PYTHON SOURCE LINES 87-93 + +.. code-block:: Python + + + recording_good_channels = spre.detect_and_remove_bad_channels( + preprocessed_recording, + method = "std", + ) + + + + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 94-98 + +It can be a good idea to sort your tetrode data separately for each tetrode. +When we use :code:`set_probegroup`, the channels are automatically +labelled by which probe in the probe group they belong to. We can access +this labeling using the "group" property. + +.. GENERATED FROM PYTHON SOURCE LINES 98-101 + +.. code-block:: Python + + + print(recording_good_channels.get_property("group")) + + + + + +.. rst-class:: sphx-glr-script-out + + .. code-block:: none + + [0 0 0 0 1 1 1 1] + + + + +.. GENERATED FROM PYTHON SOURCE LINES 102-103 + +We can then use this information to split the recording by the group property: + +.. GENERATED FROM PYTHON SOURCE LINES 103-107 + +.. code-block:: Python + + + grouped_recordings = recording_good_channels.split_by('group') + print(grouped_recordings) + + + + + +.. rst-class:: sphx-glr-script-out + + .. code-block:: none + + {0: GroundTruthRecording (ChannelSliceRecording): 4 channels - 30.0kHz - 1 segments + 1,800,000 samples - 60.00s (1.00 minutes) - float32 dtype - 27.47 MiB, 1: GroundTruthRecording (ChannelSliceRecording): 4 channels - 30.0kHz - 1 segments + 1,800,000 samples - 60.00s (1.00 minutes) - float32 dtype - 27.47 MiB} + + + + +.. GENERATED FROM PYTHON SOURCE LINES 108-110 + +Now that we've got preprocess, clean data. Let's take a look at a +snippet of data from the first group: + +.. GENERATED FROM PYTHON SOURCE LINES 110-113 + +.. code-block:: Python + + + plot_traces(grouped_recordings[0]) + + + + +.. image-sg:: /forhowto/images/sphx_glr_plot_working_with_tetrodes_002.png + :alt: plot working with tetrodes + :srcset: /forhowto/images/sphx_glr_plot_working_with_tetrodes_002.png + :class: sphx-glr-single-img + + +.. rst-class:: sphx-glr-script-out + + .. code-block:: none + + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 114-118 + +Beautiful! We are now ready to sort. To read more about sorting by group, see +:ref:`sorting-by-channel-group`. Note that many modern sorters are designed +to sort data from high-density probes and will fail for tetrodes. Please read +each spike sorter's documentation to find out if it is appropriate for tetrodes. + + +.. rst-class:: sphx-glr-timing + + **Total running time of the script:** (0 minutes 0.644 seconds) + + +.. _sphx_glr_download_forhowto_plot_working_with_tetrodes.py: + +.. only:: html + + .. container:: sphx-glr-footer sphx-glr-footer-example + + .. container:: sphx-glr-download sphx-glr-download-jupyter + + :download:`Download Jupyter notebook: plot_working_with_tetrodes.ipynb ` + + .. container:: sphx-glr-download sphx-glr-download-python + + :download:`Download Python source code: plot_working_with_tetrodes.py ` + + .. container:: sphx-glr-download sphx-glr-download-zip + + :download:`Download zipped: plot_working_with_tetrodes.zip ` + + +.. only:: html + + .. rst-class:: sphx-glr-signature + + `Gallery generated by Sphinx-Gallery `_ diff --git a/doc/forhowto/plot_working_with_tetrodes.zip b/doc/forhowto/plot_working_with_tetrodes.zip new file mode 100644 index 0000000000000000000000000000000000000000..12c4fb6c23042a68f0bf7972533f414208db03ec GIT binary patch literal 13192 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 literal 0 HcmV?d00001 diff --git a/doc/how_to/index.rst b/doc/how_to/index.rst index 0f59ed5114..e99706a9d4 100644 --- a/doc/how_to/index.rst +++ b/doc/how_to/index.rst @@ -10,11 +10,11 @@ Guides on how to solve specific, short problems in SpikeInterface. Learn how to. customize_a_plot combine_recordings process_by_channel_group - extract_lfps + ../forhowto/plot_extract_lfps build_pipeline_with_dicts physical_units unsigned_to_signed - ../tutorials/forhowto/plot_1_working_with_tetrodes + ../forhowto/plot_working_with_tetrodes analyze_neuropixels handle_drift drift_with_lfp diff --git a/examples/tutorials/forhowto/README.rst b/examples/forhowto/README.rst similarity index 100% rename from examples/tutorials/forhowto/README.rst rename to examples/forhowto/README.rst diff --git a/examples/forhowto/plot_extract_lfps.py b/examples/forhowto/plot_extract_lfps.py new file mode 100644 index 0000000000..4eb4393c22 --- /dev/null +++ b/examples/forhowto/plot_extract_lfps.py @@ -0,0 +1,313 @@ +""" +Extract LFPs +============ + +Understanding filtering artifacts and chunking when extracting LFPs + +Local Field Potentials (LFPs) are low-frequency signals (<300 Hz) that reflect the summed activity of many neurons. +Extracting LFPs from high-sampling-rate recordings requires bandpass filtering, but this can introduce artifacts +when not done carefully, especially when data is processed in chunks (for memory efficiency). + +This tutorial demonstrates: + +1. How to generate simulated LFP data +2. Common pitfalls when filtering with low cutoff frequencies +3. How chunking and margins affect filtering artifacts +4. Summary + +**Key takeaway**: For LFP extraction, use large chunks (30-60s) and large margins (several seconds) to minimize +edge artifacts, even though this is less memory-efficient. +""" + +############################################################################## +# Import necessary modules + +import time +import numpy as np +import matplotlib.pyplot as plt +from pathlib import Path +import pandas as pd +import seaborn as sns + +import spikeinterface as si +import spikeinterface.extractors as se +import spikeinterface.preprocessing as spre +import spikeinterface.widgets as sw +from spikeinterface.core import generate_ground_truth_recording + +############################################################################## +# 1. Generate simulated recording with low-frequency signals +# ----------------------------------------------------------- +# +# Let's create a simulated recording and add some low-frequency sinusoids that mimic LFP activity. + +# Generate a ground truth recording with spikes +# Use a higher sampling rate (30 kHz) to simulate raw neural data +recording, sorting = generate_ground_truth_recording( + durations=[300.0], # 300 s + sampling_frequency=30000.0, + num_channels=1, + num_units=4, + seed=2305, +) + +print(recording) + +############################################################################## +# Now let's add some low-frequency sinusoidal components to simulate LFP signals + +# Add low-frequency sinusoids with different frequencies and phases per channel +rng = np.random.default_rng(42) +num_channels = recording.get_num_channels() +lfp_signals = np.zeros( + (recording.get_num_samples(), recording.get_num_channels()) +) +time_vector = recording.get_times() + +for ch in range(num_channels): + # Add multiple frequency components (theta, alpha, beta ranges) + # Theta-like: 4-8 Hz + freq_theta = 4 + rng.random() * 4 + phase_theta = rng.random() * 2 * np.pi + amp_theta = 50 + rng.random() * 50 + + # Alpha-like: 8-12 Hz + freq_alpha = 8 + rng.random() * 4 + phase_alpha = rng.random() * 2 * np.pi + amp_alpha = 30 + rng.random() * 30 + + # Beta-like: 12-30 Hz + freq_beta = 12 + rng.random() * 18 + phase_beta = rng.random() * 2 * np.pi + amp_beta = 20 + rng.random() * 20 + + lfp_signals[:, ch] = ( + amp_theta * np.sin(2 * np.pi * freq_theta * time_vector + phase_theta) + + amp_alpha * np.sin(2 * np.pi * freq_alpha * time_vector + phase_alpha) + + amp_beta * np.sin(2 * np.pi * freq_beta * time_vector + phase_beta) + ) + +# Create a recording with the added LFP signals +recording_lfp = si.NumpyRecording( + traces_list=[lfp_signals], + sampling_frequency=recording.sampling_frequency, + channel_ids=recording.channel_ids, +) +recording_with_lfp = recording + recording_lfp + + +############################################################################## +# Let's visualize a short segment of the signal + +_ = sw.plot_traces(recording_with_lfp, time_range=[0, 3]) + +############################################################################## +# 2. Filtering with low cutoff frequencies: the problem +# ------------------------------------------------------ +# +# Now let's try to extract LFPs using a bandpass filter with a low highpass cutoff (1 Hz). +# This will demonstrate a common issue. + +# Try to filter with 1 Hz highpass +try: + recording_lfp_1hz = spre.bandpass_filter( + recording_with_lfp, freq_min=1.0, freq_max=300.0 + ) +except Exception as e: + print(f"Error message:\n{str(e)}") + +############################################################################## +# **Why does this fail?** +# +# The error occurs because by default in SpikeInterface when highpass filtering below 100 Hz. +# Filters with very low cutoff frequencies have long impulse responses, which require larger margins to avoid edge artifacts between chunks. +# +# The filter length (and required margin) scales inversely with the highpass frequency. A 1 Hz highpass +# filter requires a margin of several seconds, while a 300 Hz highpass (for spike extraction) only needs +# a few milliseconds. + +############################################################################## +# 3. Understanding chunking and margins +# -------------------------------------- +# +# SpikeInterface processes recordings in chunks to handle large datasets efficiently. Each chunk needs +# a "margin" (extra samples at the edges) to avoid edge artifacts when filtering. Let's demonstrate +# this by saving the filtered data with different chunking strategies. +# +# **This error is to inform the user that extra care should be used when dealing with LFP signals!** +# +# We can ignore this error, but let's make sure we understand what it's happening. + +# We can ignore this error, but let's see what is happening +recording_filt = spre.bandpass_filter( + recording_with_lfp, freq_min=1.0, freq_max=300.0, ignore_low_freq_error=True +) + +############################################################################## +# When retrieving traces, extra samples will be retrieved at the left and right edges. +# By default, the filter function will set a margin to 5x the sampling period associated to `freq_min`. +# So for a 1 Hz cutoff frequency, the margin will be 5 seconds! + +margin_in_s = recording_filt.margin_samples / recording_lfp.sampling_frequency +print(f"Margin: {margin_in_s} s") + +############################################################################## +# This effectively means that if we plot 1-s snippet of traces, a total of 11 s will actually be read and filtered. +# Note that the margin can be overridden with the `margin_ms` argument, but we do not recommend changing it. + +_ = sw.plot_traces(recording_filt, time_range=[20, 21]) + +############################################################################## +# A warning tells us that what we are doing is not optimized, since in order to get the requested traces +# the margin "overhead" is very large. +# +# If we ask or plot longer snippets, the warning is not displayed. + +_ = sw.plot_traces(recording_filt, time_range=[20, 80]) + +############################################################################## +# 4. Quantification and visualization of the artifacts +# ----------------------------------------------------- +# +# Let's extract the traces and visualize the differences between chunking strategies. +# We'll focus on the chunk boundaries where artifacts appear. + +margins_ms = [100, 1000, 5000] +chunk_durations = ["1s", "10s", "30s"] + +############################################################################## +# The best we can do is to save the full recording in one chunk. This will cause no artifacts and chunking effects, +# but in practice it's not possible due to the duration and number of channels of most setups. +# +# Since in this toy case we have a single channel 5-min recording, we can use this as "optimal". + +recording_optimal = recording_filt.save( + format="memory", + chunk_duration="1000s", + progress_bar=False +) + +print(recording_optimal) + +############################################################################## +# Now we can do the same with our various options: + +recordings_chunked = {} + +for margin_ms in margins_ms: + for chunk_duration in chunk_durations: + print(f"Margin ms: {margin_ms} - Chunk duration: {chunk_duration}") + t_start = time.perf_counter() + recording_chunk = spre.bandpass_filter( + recording_with_lfp, + freq_min=1.0, + freq_max=300.0, + margin_ms=margin_ms, + ignore_low_freq_error=True, + ) + recording_chunk = recording_chunk.save( + format="memory", + chunk_duration=chunk_duration, + verbose=False, + progress_bar=False + ) + t_stop = time.perf_counter() + result_dict = {"recording": recording_chunk, "time": t_stop - t_start} + recordings_chunked[(margin_ms, chunk_duration)] = result_dict + +############################################################################## +# Let's visualize the error for the "10s" chunks and different margins, centered around 30s (which is a chunk edge): + +fig, ax = plt.subplots(figsize=(10, 5)) +trace_plotted = False +start_time = 15 # seconds +end_time = 45 # seconds +start_frame = int(start_time * recording_optimal.sampling_frequency) +end_frame = int(end_time * recording_optimal.sampling_frequency) +timestamps = recording_optimal.get_times()[start_frame:end_frame] +for recording_key, recording_dict in recordings_chunked.items(): + recording_chunk = recording_dict["recording"] + margin, chunk = recording_key + # only plot "10s" chunks + if chunk != "10s": + continue + traces_opt = recording_optimal.get_traces( + start_frame=start_frame, end_frame=end_frame + ) + if not trace_plotted: + ax.plot(timestamps, traces_opt, color="grey", label="traces", alpha=0.5) + trace_plotted = True + diff = recording_optimal - recording_chunk + traces_diff = diff.get_traces(start_frame=start_frame, end_frame=end_frame) + ax.plot(timestamps, traces_diff, label=f"Margin: {margin}") + for chunk in [20, 30, 40]: # chunk boundaries at 10s intervals + ax.axvline(x=chunk, color="red", linestyle="--", alpha=0.5) + +ax.set_xlabel("Time (s)") +ax.set_ylabel("Voltage ($\\mu V$)") +_ = ax.legend() + +############################################################################## +# From the plot, we can see that there is a very small error when the margin size is large (green), +# a larger error when the margin is smaller (orange) and a large error when the margin is small (blue). +# So we need large margins (compared to the chunk size) if we want accurate filtered. +# +# The artifacts do not depend on chunk size, but for smaller chunk sizes, these artifacts will happen more often. +# In addition, the margin "overhead" will make processing slower. Let's quantify these concepts by computing the +# overall absolute error with respect to the optimal case and processing time. + +trace_plotted = False +traces_optimal = recording_optimal.get_traces() +data = {"margin": [], "chunk": [], "error": [], "time": []} +for recording_key, recording_dict in recordings_chunked.items(): + recording_chunk = recording_dict["recording"] + time = recording_dict["time"] + margin, chunk = recording_key + traces_chunk = recording_chunk.get_traces() + error = np.sum(np.abs(traces_optimal - traces_chunk)) + data["margin"].append(margin) + data["chunk"].append(chunk) + data["error"].append(error) + data["time"].append(time) + +df = pd.DataFrame(data=data) + +############################################################################## +# Now let's visualize the error and processing time for different margin and chunk size combinations + +fig, axs = plt.subplots(ncols=2, figsize=(10, 5)) +sns.barplot(data=data, x="margin", y="error", hue="chunk", ax=axs[0]) +axs[0].set_yscale("log") +sns.barplot(data=data, x="margin", y="time", hue="chunk", ax=axs[1]) +axs[0].set_title("Error VS margin x chunk size") +axs[1].set_title("Processing time VS margin x chunk size") + +sns.despine(fig) + +############################################################################## +# Summary +# ------- +# +# 1. **Low-frequency filters require special care**: Filters with low cutoff frequencies (< 10 Hz) have long +# impulse responses that require large margins to avoid edge artifacts. +# +# 2. **Chunking artifacts are real**: When processing data in chunks, insufficient margins lead to visible +# discontinuities and errors at chunk boundaries. +# +# 3. **The solution: large chunks and large margins**: For LFP extraction (1-300 Hz), use: +# - Chunk size: 30-60 seconds +# - Margin size: 5 seconds (for 1 Hz highpass) (**use defaults!**) +# - This is less memory-efficient but more accurate +# +# 4. **Downsample after filtering**: After bandpass filtering, downsample to reduce data size (e.g., to 1-2.5 kHz +# for 300 Hz max frequency). +# +# 5. **Trade-offs**: There's always a trade-off between computational efficiency (smaller chunks, less memory) +# and accuracy (larger chunks, fewer artifacts). For LFP analysis, accuracy should take priority. +# +# **When processing your own data:** +# +# - If you have memory constraints, use the largest chunk size your system can handle +# - Always verify your filtering parameters on a small test segment first +# - Consider the lowest frequency component you want to preserve when setting margins +# - Save the processed LFP data to disk to avoid recomputing diff --git a/examples/forhowto/plot_working_with_tetrodes.py b/examples/forhowto/plot_working_with_tetrodes.py new file mode 100644 index 0000000000..0c652a5186 --- /dev/null +++ b/examples/forhowto/plot_working_with_tetrodes.py @@ -0,0 +1,117 @@ +""" +Work with tetrodes +================== + +Tetrodes are a common recording method for electrophysiological data. It is also common +to record from several tetrodes at the same time. In this 'how to' we'll see how to +work with data from two tetrodes, each with four channels. + +We'll start by importing some functions we'll use in this How To guide +""" + +import spikeinterface.preprocessing as spre +from spikeinterface.widgets import plot_traces, plot_probe_map +from spikeinterface import generate_ground_truth_recording + +from probeinterface import generate_tetrode, ProbeGroup + +############################################################################## +# In practice, you would read in your raw data from a file. Instead, we will generate a +# recording with eight channels. We can also set a duration, number of units and +# sampling frequency. + +recording, _ = generate_ground_truth_recording( + durations = [60], # make the recording 60s long + sampling_frequency=30_000, + num_channels=8, + num_units=10, +) + +############################################################################## +# We now need to define the probe. This will tell the recording which channels came from +# which tetrode. To do this, we will use the :code:`generate_tetrode` function from :code:`ProbeInterface` +# to generate two 4-channel probes (representing one tetrode each). In our case, since we +# don't know the relative distances between the tetrodes, we will move the second +# tetrode away from the first by 100 microns. This is just so we can visualize the +# results more easily. Eventually, we will sort each tetrode separately, so their +# relative distance won't affect the results. + +# Technically, we will add each tetrode to a :code:`ProbeGroup`. Read more in the ProbeInterface +# docs. + +# Create each individual tetrode +tetrode_1 = generate_tetrode() +tetrode_1.create_auto_shape() + +tetrode_2 = generate_tetrode() +tetrode_2.move([100, 0]) +tetrode_2.create_auto_shape() + +# Add the two tetrodes to a ProbeGroup +tetrode_group = ProbeGroup() +tetrode_group.add_probe(tetrode_1) +tetrode_group.add_probe(tetrode_2) + +# Now we need to "wire" our tetrodes to ensure that each contact +# can be associated with the correct channel when we attach it +# to the recording. In this example we are just using `range` +# but see ProbeInterface for more tutorials on wiring +tetrode_group.set_global_device_channel_indices(range(8)) + +############################################################################## +# We can now attach the :code:`tetrode_group` to our recording. To check if this worked, we'll +# plot the probe map + +recording_with_probe = recording.set_probegroup(tetrode_group) +plot_probe_map(recording_with_probe) + +############################################################################## +# Looks good! Now that the recording is aware of the probe geometry, we can +# begin a standard spike sorting pipeline. First, we can apply preprocessing. +# Note that we apply this preprocessing on the entire bundle of tetrodes. + +preprocessed_recording = spre.bandpass_filter(recording_with_probe) + +############################################################################## +# WARNING: a very common preprocessing step is to apply a common median +# reference. This subtracts the median signal from all channels to help +# remove noise. However, for a tetrode, a spike is often seen on all +# channels. So removing the median can remove the entire spike! +# This is still a danger if you have two tetrodes in a bundle, which +# might pick up the same spike, but becomes less dangerous +# as the number of tetrodes in your bundle increases. +# +# Tetrodes often have dead channels, so it is advised to try and detect +# and remove these. For tetrodes, we should use a detection method which +# doesn't depend on the channel locations such as std or mad: + +recording_good_channels = spre.detect_and_remove_bad_channels( + preprocessed_recording, + method = "std", +) + +############################################################################## +# It can be a good idea to sort your tetrode data separately for each tetrode. +# When we use :code:`set_probegroup`, the channels are automatically +# labelled by which probe in the probe group they belong to. We can access +# this labeling using the "group" property. + +print(recording_good_channels.get_property("group")) + +############################################################################## +# We can then use this information to split the recording by the group property: + +grouped_recordings = recording_good_channels.split_by('group') +print(grouped_recordings) + +############################################################################## +# Now that we've got preprocess, clean data. Let's take a look at a +# snippet of data from the first group: + +plot_traces(grouped_recordings[0]) + +############################################################################## +# Beautiful! We are now ready to sort. To read more about sorting by group, see +# :ref:`sorting-by-channel-group`. Note that many modern sorters are designed +# to sort data from high-density probes and will fail for tetrodes. Please read +# each spike sorter's documentation to find out if it is appropriate for tetrodes. diff --git a/src/spikeinterface/exporters/tests/test_export_to_ibl.py b/src/spikeinterface/exporters/tests/test_export_to_ibl.py index 3b859634df..96038ced59 100644 --- a/src/spikeinterface/exporters/tests/test_export_to_ibl.py +++ b/src/spikeinterface/exporters/tests/test_export_to_ibl.py @@ -78,7 +78,7 @@ def test_export_lfp_to_ibl(sorting_analyzer_sparse_for_export, create_cache_fold sorting_analyzer = sorting_analyzer_sparse_for_export recording = sorting_analyzer.recording - recording_lfp = bandpass_filter(recording, freq_min=0.5, freq_max=300) + recording_lfp = bandpass_filter(recording, freq_min=0.5, freq_max=300, ignore_low_freq_error=True) recording_lfp = decimate(recording_lfp, 10) # LFP, but no AP export_to_ibl_gui( diff --git a/src/spikeinterface/preprocessing/filter.py b/src/spikeinterface/preprocessing/filter.py index 4ee7347962..b57ebe5519 100644 --- a/src/spikeinterface/preprocessing/filter.py +++ b/src/spikeinterface/preprocessing/filter.py @@ -232,8 +232,6 @@ class BandpassFilterRecording(FilterRecording): margin_ms : float | str, default: "auto" Margin in ms on border to avoid border effect. If "auto", margin is computed as 3 times the filter highpass cutoff period. - max_margin_s : float, default: 5 - Maximum margin in seconds when margin_ms is set to "auto". dtype : dtype or None The dtype of the returned traces. If None, the dtype of the parent recording is used ignore_low_freq_error : bool, default: False @@ -322,8 +320,6 @@ class NotchFilterRecording(FilterRecording): dtype of recording. If None, will take from `recording` margin_ms : float | str, default: "auto" Margin in ms on border to avoid border effect - max_margin_s : float, default: 5 - Maximum margin in seconds when margin_ms is set to "auto". Returns ------- @@ -331,7 +327,7 @@ class NotchFilterRecording(FilterRecording): The notch-filtered recording extractor object """ - def __init__(self, recording, freq=3000, q=30, margin_ms="auto", max_margin_s=5, dtype=None, **filter_kwargs): + def __init__(self, recording, freq=3000, q=30, margin_ms="auto", dtype=None, **filter_kwargs): import scipy.signal if margin_ms == "auto": From a8df35779546ab0398ce2aa613033f8e8f9771c5 Mon Sep 17 00:00:00 2001 From: Alessio Buccino Date: Tue, 9 Dec 2025 12:10:01 +0100 Subject: [PATCH 08/19] Remove pre-generated how-to files for extract lfp --- doc/how_to/extract_lfps.rst | 565 ------------------ .../extract_lfps_files/extract_lfps_17_2.png | Bin 29067 -> 0 bytes .../extract_lfps_files/extract_lfps_19_1.png | Bin 20533 -> 0 bytes .../extract_lfps_files/extract_lfps_28_2.png | Bin 75077 -> 0 bytes .../extract_lfps_files/extract_lfps_31_0.png | Bin 26729 -> 0 bytes .../extract_lfps_files/extract_lfps_8_1.png | Bin 25985 -> 0 bytes 6 files changed, 565 deletions(-) delete mode 100644 doc/how_to/extract_lfps.rst delete mode 100644 doc/how_to/extract_lfps_files/extract_lfps_17_2.png delete mode 100644 doc/how_to/extract_lfps_files/extract_lfps_19_1.png delete mode 100644 doc/how_to/extract_lfps_files/extract_lfps_28_2.png delete mode 100644 doc/how_to/extract_lfps_files/extract_lfps_31_0.png delete mode 100644 doc/how_to/extract_lfps_files/extract_lfps_8_1.png diff --git a/doc/how_to/extract_lfps.rst b/doc/how_to/extract_lfps.rst deleted file mode 100644 index 4a7689b65e..0000000000 --- a/doc/how_to/extract_lfps.rst +++ /dev/null @@ -1,565 +0,0 @@ -Extract LFPs -============ - -Understanding filtering artifacts and chunking when extracting LFPs -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -Local Field Potentials (LFPs) are low-frequency signals (<300 Hz) that -reflect the summed activity of many neurons. Extracting LFPs from -high-sampling-rate recordings requires bandpass filtering, but this can -introduce artifacts when not done carefully, especially when data is -processed in chunks (for memory efficiency). - -This tutorial demonstrates: 1. How to generate simulated LFP data 2. -Common pitfalls when filtering with low cutoff frequencies 3. How -chunking and margins affect filtering artifacts 4. Summary - -**Key takeaway**: For LFP extraction, use large chunks (30-60s) and -large margins (several seconds) to minimize edge artifacts, even though -this is less memory-efficient. - -.. code:: ipython3 - - import time - import numpy as np - import matplotlib.pyplot as plt - from pathlib import Path - import pandas as pd - import seaborn as sns - - import spikeinterface as si - import spikeinterface.extractors as se - import spikeinterface.preprocessing as spre - import spikeinterface.widgets as sw - from spikeinterface.core import generate_ground_truth_recording - -.. code:: ipython3 - - %matplotlib inline - -1. Generate simulated recording with low-frequency signals ----------------------------------------------------------- - -Let’s create a simulated recording and add some low-frequency sinusoids -that mimic LFP activity. - -.. code:: ipython3 - - # Generate a ground truth recording with spikes - # Use a higher sampling rate (30 kHz) to simulate raw neural data - recording, sorting = generate_ground_truth_recording( - durations=[300.0], # 300 s - sampling_frequency=30000.0, - num_channels=1, - num_units=4, - seed=2305, - ) - - print(f"Recording: {recording}") - print(f"Duration: {recording.get_total_duration():.1f} s") - print(f"Sampling frequency: {recording.sampling_frequency} Hz") - print(f"Number of channels: {recording.get_num_channels()}") - - -.. parsed-literal:: - - Recording: GroundTruthRecording (InjectTemplatesRecording): 1 channels - 30.0kHz - 1 segments - 9,000,000 samples - 300.00s (5.00 minutes) - float32 dtype - 34.33 MiB - Duration: 300.0 s - Sampling frequency: 30000.0 Hz - Number of channels: 1 - - -Now let’s add some low-frequency sinusoidal components to simulate LFP -signals - -.. code:: ipython3 - - # Add low-frequency sinusoids with different frequencies and phases per channel - np.random.seed(2305) - num_channels = recording.get_num_channels() - lfp_signals = np.zeros((recording.get_num_samples(), recording.get_num_channels())) - time_vector = recording.get_times() - - for ch in range(num_channels): - # Add multiple frequency components (theta, alpha, beta ranges) - # Theta-like: 4-8 Hz - freq_theta = 4 + np.random.rand() * 4 - phase_theta = np.random.rand() * 2 * np.pi - amp_theta = 50 + np.random.rand() * 50 - - # Alpha-like: 8-12 Hz - freq_alpha = 8 + np.random.rand() * 4 - phase_alpha = np.random.rand() * 2 * np.pi - amp_alpha = 30 + np.random.rand() * 30 - - # Beta-like: 12-30 Hz - freq_beta = 12 + np.random.rand() * 18 - phase_beta = np.random.rand() * 2 * np.pi - amp_beta = 20 + np.random.rand() * 20 - - lfp_signals[:, ch] = ( - amp_theta * np.sin(2 * np.pi * freq_theta * time_vector + phase_theta) + - amp_alpha * np.sin(2 * np.pi * freq_alpha * time_vector + phase_alpha) + - amp_beta * np.sin(2 * np.pi * freq_beta * time_vector + phase_beta) - ) - - # Create a recording with the added LFP signals - recording_lfp = si.NumpyRecording(traces_list=[lfp_signals], sampling_frequency=recording.sampling_frequency, - channel_ids=recording.channel_ids) - recording_with_lfp = recording + recording_lfp - - print("Added low-frequency components to simulate LFP signals") - - -.. parsed-literal:: - - Added low-frequency components to simulate LFP signals - - -Let’s visualize a short segment of the signal - -.. code:: ipython3 - - sw.plot_traces(recording_with_lfp, time_range=[0, 3]) - - - - -.. parsed-literal:: - - - - - - -.. image:: extract_lfps_files/extract_lfps_8_1.png - - -2. Filtering with low cutoff frequencies: the problem ------------------------------------------------------ - -Now let’s try to extract LFPs using a bandpass filter with a low -highpass cutoff (1 Hz). This will demonstrate a common issue. - -.. code:: ipython3 - - # Try to filter with 1 Hz highpass - try: - recording_lfp_1hz = spre.bandpass_filter(recording_with_lfp, freq_min=1.0, freq_max=300.0) - print("Filtering succeeded!") - except Exception as e: - print(f"Error message:\n{str(e)}") - - -.. parsed-literal:: - - Error message: - The freq_min (1.0 Hz) is too low and may cause artifacts during chunk processing. You can set 'ignore_low_freq_error=True' to bypass this error, but make sure you understand the implications. It is recommended to use large chunks when processing/saving your filtered recording to minimize IO overhead.Refer to this documentation on LFP filtering and chunking artifacts for more details: https://spikeinterface.readthedocs.io/en/stable/how-to/extracting_lfps.html. - - -**Why does this fail?** - -The error occurs because by default in SpikeInterface when highpass -filtering below 100 Hz. Filters with very low cutoff frequencies have -long impulse responses, which require larger margins to avoid edge -artifacts between chunks. - -The filter length (and required margin) scales inversely with the -highpass frequency. A 1 Hz highpass filter requires a margin of several -seconds, while a 300 Hz highpass (for spike extraction) only needs a few -milliseconds. - -3. Understanding chunking and margins -------------------------------------- - -SpikeInterface processes recordings in chunks to handle large datasets -efficiently. Each chunk needs a “margin” (extra samples at the edges) to -avoid edge artifacts when filtering. Let’s demonstrate this by saving -the filtered data with different chunking strategies. - -**This error is to inform the user that extra care should be used when -dealing with LFP signals!** - -We can ignore this error, but let’s make sure we understand what it’s -happening. - -.. code:: ipython3 - - # We can ignore this error, but let's see what is happening - recording_filt = spre.bandpass_filter(recording_with_lfp, freq_min=1.0, freq_max=300.0, ignore_low_freq_error=True) - -When retrieving traces, extra samples will be retrieved at the left and -right edges. By default, the filter function will set a margin to 5x the -sampling period associated to ``freq_min``. So for a 1 Hz cutoff -frequency, the margin will be 5 seconds! - -.. code:: ipython3 - - margin_in_s = recording_filt.margin_samples / recording_lfp.sampling_frequency - print(f"Margin: {margin_in_s} s") - - -.. parsed-literal:: - - Margin: 5.0 s - - -This effectively means that if we plot 1-s snippet of traces, a total of -11 s will actually be read and filtered. Note that the margin can be -overridden with the ``margin_ms`` argument, but we do not recommend -changing it. - -.. code:: ipython3 - - sw.plot_traces(recording_filt, time_range=[20, 21]) - - -.. parsed-literal:: - - /home/alessio/Documents/Codes/spike_sorting/spikeinterface/spikeinterface/src/spikeinterface/preprocessing/filter.py:169: UserWarning: The margin size (150000 samples) is more than 20% of the chunk size 30000 samples. This may lead to performance bottlenecks when chunking. Consider increasing the chunk size to minimize margin overhead. - warnings.warn( - - - - -.. parsed-literal:: - - - - - - -.. image:: extract_lfps_files/extract_lfps_17_2.png - - -A warning tells us that what we are doing is not optimized, since in -order to get the requested traces the marging “overhead” is very large. - -If we ask or plot longer snippets, the warning is not displayed. - -.. code:: ipython3 - - sw.plot_traces(recording_filt, time_range=[20, 80]) - - - - -.. parsed-literal:: - - - - - - -.. image:: extract_lfps_files/extract_lfps_19_1.png - - -4. Quantification and visualization the artifacts -------------------------------------------------- - -Let’s extract the traces and visualize the differences between chunking -strategies. We’ll focus on the chunk boundaries where artifacts appear. - -.. code:: ipython3 - - margins_ms = [100, 1000, 5000] - chunk_durations = ["1s", "10s", "30s"] - -The best we can do is to save the full recording in one chunk. This will -cause no artifacts and chunking effects, but in practice it’s not -possible due to the duration and number of channels of most setups. - -Since in this toy case we have a single channel 5-min recording, we can -use this as “optimal”. - -.. code:: ipython3 - - recording_optimal = recording_filt.save(format="memory", chunk_duration="1000s") - - - -.. parsed-literal:: - - write_memory_recording (no parallelization): 0%| | 0/1 [00:00SharedMemoryRecording: 1 channels - 30.0kHz - 1 segments - 9,000,000 samples - 300.00s (5.00 minutes) - float32 dtype - 34.33 MiB
    Channel IDs
      ['0']
    Annotations
    • is_filtered : True
    Properties
      - - - -Now we can do the same with our various options: - -.. code:: ipython3 - - recordings_chunked = {} - - for margin_ms in margins_ms: - for chunk_duration in chunk_durations: - print(f"Margin ms: {margin_ms} - Chunk duration: {chunk_duration}") - t_start = time.perf_counter() - recording_chunk = spre.bandpass_filter( - recording_with_lfp, - freq_min=1.0, - freq_max=300.0, - margin_ms=margin_ms, - ignore_low_freq_error=True - ) - recording_chunk = recording_chunk.save( - format="memory", - chunk_duration=chunk_duration, - verbose=False, - ) - t_stop = time.perf_counter() - result_dict = { - "recording": recording_chunk, - "time": t_stop - t_start - } - recordings_chunked[(margin_ms, chunk_duration)] = result_dict - - -.. parsed-literal:: - - Margin ms: 100 - Chunk duration: 1s - - -.. parsed-literal:: - - /home/alessio/Documents/Codes/spike_sorting/spikeinterface/spikeinterface/src/spikeinterface/preprocessing/filter.py:453: UserWarning: The provided margin_ms (100 ms) is smaller than the recommended margin for the given freq_min (1.0 Hz). This may lead to artifacts at the edges of chunks during processing. Consider increasing the margin_ms to at least 5000.0 ms. - warnings.warn( - - - -.. parsed-literal:: - - write_memory_recording (no parallelization): 0%| | 0/300 [00:00 - - - - -.. image:: extract_lfps_files/extract_lfps_28_2.png - - -For smaller chunk sizes, these artifact will happen more often. In -addition, the margin “overhead” will make processing slower. Let’s -quantify these concepts by computing the overall absolute error with -respect to the optimal case and processing time. - -.. code:: ipython3 - - trace_plotted = False - traces_optimal = recording_optimal.get_traces() - data = {"margin": [], "chunk": [], "error": [], "time": []} - for recording_key, recording_dict in recordings_chunked.items(): - recording_chunk = recording_dict["recording"] - time = recording_dict["time"] - margin, chunk = recording_key - traces_chunk = recording_chunk.get_traces() - error = np.sum(np.abs(traces_optimal - traces_chunk)) - data["margin"].append(margin) - data["chunk"].append(chunk) - data["error"].append(error) - data["time"].append(time) - - df = pd.DataFrame(data=data) - -.. code:: ipython3 - - fig, axs = plt.subplots(ncols=2, figsize=(10, 5)) - sns.barplot(data=data, x="margin", y="error", hue="chunk", ax=axs[0]) - axs[0].set_yscale("log") - sns.barplot(data=data, x="margin", y="time", hue="chunk", ax=axs[1]) - axs[0].set_title("Error VS margin x chunk size") - axs[1].set_title("Processing time VS margin x chunk size") - - - sns.despine(fig) - - - -.. image:: extract_lfps_files/extract_lfps_31_0.png - - -4. Summary ----------- - -1. **Low-frequency filters require special care**: Filters with low - cutoff frequencies (< 10 Hz) have long impulse responses that require - large margins to avoid edge artifacts. - -2. **Chunking artifacts are real**: When processing data in chunks, - insufficient margins lead to visible discontinuities and errors at - chunk boundaries. - -3. **The solution: large chunks and large margins**: For LFP extraction - (1-300 Hz), use: - - - Chunk size: 30-60 seconds - - Margin size: 5 seconds (for 1 Hz highpass) (**use defaults!**) - - This is less memory-efficient but more accurate - -4. **Downsample after filtering**: After bandpass filtering, downsample - to reduce data size (e.g., to 1-2.5 kHz for 300 Hz max frequency). - -5. **Trade-offs**: There’s always a trade-off between computational - efficiency (smaller chunks, less memory) and accuracy (larger chunks, - fewer artifacts). For LFP analysis, accuracy should take priority. - -**When processing your own data:** - If you have memory constraints, use -the largest chunk size your system can handle - Always verify your -filtering parameters on a small test segment first - Consider the lowest -frequency component you want to preserve when setting margins - Save the -processed LFP data to disk to avoid recomputing diff --git a/doc/how_to/extract_lfps_files/extract_lfps_17_2.png b/doc/how_to/extract_lfps_files/extract_lfps_17_2.png deleted file mode 100644 index 6af871db7c83feac120b2e6a966e1703ac6928ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29067 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≧wPdZ6Fy{A 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 LZ7uT5+z^2|MD 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 diff --git a/doc/how_to/extract_lfps_files/extract_lfps_28_2.png b/doc/how_to/extract_lfps_files/extract_lfps_28_2.png deleted file mode 100644 index c637f91d60c3e59346ce8a5a645659cf20a7d950..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 75077 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 diff --git a/doc/how_to/extract_lfps_files/extract_lfps_8_1.png b/doc/how_to/extract_lfps_files/extract_lfps_8_1.png deleted file mode 100644 index aeecc0d4825b14088779bc20d467bbf6947a3163..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25985 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

      - - -.. toctree:: - :hidden: - - /forhowto/plot_extract_lfps - /forhowto/plot_working_with_tetrodes - - -.. only:: html - - .. container:: sphx-glr-footer sphx-glr-footer-gallery - - .. container:: sphx-glr-download sphx-glr-download-python - - :download:`Download all examples in Python source code: forhowto_python.zip ` - - .. container:: sphx-glr-download sphx-glr-download-jupyter - - :download:`Download all examples in Jupyter notebooks: forhowto_jupyter.zip ` - - -.. only:: html - - .. rst-class:: sphx-glr-signature - - `Gallery generated by Sphinx-Gallery `_ diff --git a/doc/forhowto/plot_extract_lfps.codeobj.json b/doc/forhowto/plot_extract_lfps.codeobj.json deleted file mode 100644 index ae763dc01b..0000000000 --- a/doc/forhowto/plot_extract_lfps.codeobj.json +++ /dev/null @@ -1,2637 +0,0 @@ -{ - "_": [ - { - "is_class": false, - "is_explicit": false, - "module": "matplotlib.legend", - "module_short": "matplotlib.legend", - "name": "Legend" - }, - { - "is_class": false, - "is_explicit": false, - "module": "matplotlib", - "module_short": "matplotlib", - "name": "Legend" - } - ], - "amp_alpha": [ - { - "is_class": false, - "is_explicit": false, - "module": "builtins", - "module_short": "builtins", - "name": "float" - } - ], - "amp_beta": [ - { - "is_class": false, - "is_explicit": false, - "module": "builtins", - "module_short": "builtins", - "name": "float" - } - ], - "amp_theta": [ - { - "is_class": false, - "is_explicit": false, - "module": "builtins", - "module_short": "builtins", - "name": "float" - } - ], - "ax": [ - { - "is_class": false, - "is_explicit": false, - "module": "matplotlib.axes._axes", - "module_short": "matplotlib.axes", - "name": "Axes" - }, - { - "is_class": false, - "is_explicit": false, - "module": "matplotlib.axes", - "module_short": "matplotlib.axes", - "name": "Axes" - }, - { - "is_class": false, - "is_explicit": false, - "module": "matplotlib", - "module_short": "matplotlib", - "name": "Axes" - } - ], - "ax.axvline": [ - { - "is_class": false, - "is_explicit": false, - "module": "matplotlib.axes._axes", - "module_short": "matplotlib.axes", - "name": "Axes.axvline" - }, - { - "is_class": false, - "is_explicit": false, - "module": "matplotlib.axes", - "module_short": "matplotlib.axes", - "name": "Axes.axvline" - }, - { - "is_class": false, - "is_explicit": false, - "module": "matplotlib", - "module_short": "matplotlib", - "name": "Axes.axvline" - }, - { - "is_class": false, - "is_explicit": false, - "module": "matplotlib.axes._base", - "module_short": "matplotlib.axes._base", - "name": "_AxesBase.axvline" - }, - { - "is_class": false, - "is_explicit": false, - "module": "matplotlib.axes", - "module_short": "matplotlib.axes", - "name": "_AxesBase.axvline" - }, - { - "is_class": false, - "is_explicit": false, - "module": "matplotlib", - "module_short": "matplotlib", - "name": "_AxesBase.axvline" - }, - { - "is_class": false, - "is_explicit": false, - "module": "matplotlib.artist", - "module_short": "matplotlib.artist", - "name": "Artist.axvline" - }, - { - "is_class": false, - "is_explicit": false, - "module": "matplotlib", - "module_short": "matplotlib", - "name": "Artist.axvline" - } - ], - "ax.legend": [ - { - "is_class": false, - "is_explicit": false, - "module": "matplotlib.axes._axes", - "module_short": "matplotlib.axes", - "name": "Axes.legend" - }, - { - "is_class": false, - "is_explicit": false, - "module": "matplotlib.axes", - "module_short": "matplotlib.axes", - "name": "Axes.legend" - }, - { - "is_class": false, - "is_explicit": false, - "module": "matplotlib", - "module_short": "matplotlib", - "name": "Axes.legend" - }, - { - "is_class": false, - "is_explicit": false, - "module": "matplotlib.axes._base", - "module_short": "matplotlib.axes._base", - "name": "_AxesBase.legend" - }, - { - "is_class": false, - "is_explicit": false, - "module": "matplotlib.axes", - "module_short": "matplotlib.axes", - "name": "_AxesBase.legend" - }, - { - "is_class": false, - "is_explicit": false, - "module": "matplotlib", - "module_short": "matplotlib", - "name": "_AxesBase.legend" - }, - { - "is_class": false, - "is_explicit": false, - "module": "matplotlib.artist", - "module_short": "matplotlib.artist", - "name": "Artist.legend" - }, - { - "is_class": false, - "is_explicit": false, - "module": "matplotlib", - "module_short": "matplotlib", - "name": "Artist.legend" - } - ], - "ax.plot": [ - { - "is_class": false, - "is_explicit": false, - "module": "matplotlib.axes._axes", - "module_short": "matplotlib.axes", - "name": "Axes.plot" - }, - { - "is_class": false, - "is_explicit": false, - "module": "matplotlib.axes", - "module_short": "matplotlib.axes", - "name": "Axes.plot" - }, - { - "is_class": false, - "is_explicit": false, - "module": "matplotlib", - "module_short": "matplotlib", - "name": "Axes.plot" - }, - { - "is_class": false, - "is_explicit": false, - "module": "matplotlib.axes._base", - "module_short": "matplotlib.axes._base", - "name": "_AxesBase.plot" - }, - { - "is_class": false, - "is_explicit": false, - "module": "matplotlib.axes", - "module_short": "matplotlib.axes", - "name": "_AxesBase.plot" - }, - { - "is_class": false, - "is_explicit": false, - "module": "matplotlib", - "module_short": "matplotlib", - "name": "_AxesBase.plot" - }, - { - "is_class": false, - "is_explicit": false, - "module": "matplotlib.artist", - "module_short": "matplotlib.artist", - "name": "Artist.plot" - }, - { - "is_class": false, - "is_explicit": false, - "module": "matplotlib", - "module_short": "matplotlib", - "name": "Artist.plot" - } - ], - "ax.set_xlabel": [ - { - "is_class": false, - "is_explicit": false, - "module": "matplotlib.axes._axes", - "module_short": "matplotlib.axes", - "name": "Axes.set_xlabel" - }, - { - "is_class": false, - "is_explicit": false, - "module": "matplotlib.axes", - "module_short": "matplotlib.axes", - "name": "Axes.set_xlabel" - }, - { - "is_class": false, - "is_explicit": false, - "module": "matplotlib", - "module_short": "matplotlib", - "name": "Axes.set_xlabel" - }, - { - "is_class": false, - "is_explicit": false, - "module": "matplotlib.axes._base", - "module_short": "matplotlib.axes._base", - "name": "_AxesBase.set_xlabel" - }, - { - "is_class": false, - "is_explicit": false, - "module": "matplotlib.axes", - "module_short": "matplotlib.axes", - "name": "_AxesBase.set_xlabel" - }, - { - "is_class": false, - "is_explicit": false, - "module": "matplotlib", - "module_short": "matplotlib", - "name": "_AxesBase.set_xlabel" - }, - { - "is_class": false, - "is_explicit": false, - "module": "matplotlib.artist", - "module_short": "matplotlib.artist", - "name": "Artist.set_xlabel" - }, - { - "is_class": false, - "is_explicit": false, - "module": "matplotlib", - "module_short": "matplotlib", - "name": "Artist.set_xlabel" - } - ], - "ax.set_ylabel": [ - { - "is_class": false, - "is_explicit": false, - "module": "matplotlib.axes._axes", - "module_short": "matplotlib.axes", - "name": "Axes.set_ylabel" - }, - { - "is_class": false, - "is_explicit": false, - "module": "matplotlib.axes", - "module_short": "matplotlib.axes", - "name": "Axes.set_ylabel" - }, - { - "is_class": false, - "is_explicit": false, - "module": "matplotlib", - "module_short": "matplotlib", - "name": "Axes.set_ylabel" - }, - { - "is_class": false, - "is_explicit": false, - "module": "matplotlib.axes._base", - "module_short": "matplotlib.axes._base", - "name": "_AxesBase.set_ylabel" - }, - { - "is_class": false, - "is_explicit": false, - "module": "matplotlib.axes", - "module_short": "matplotlib.axes", - "name": "_AxesBase.set_ylabel" - }, - { - "is_class": false, - "is_explicit": false, - "module": "matplotlib", - "module_short": "matplotlib", - "name": "_AxesBase.set_ylabel" - }, - { - "is_class": false, - "is_explicit": false, - "module": "matplotlib.artist", - "module_short": "matplotlib.artist", - "name": "Artist.set_ylabel" - }, - { - "is_class": false, - "is_explicit": false, - "module": "matplotlib", - "module_short": "matplotlib", - "name": "Artist.set_ylabel" - } - ], - "axs": [ - { - "is_class": false, - "is_explicit": false, - "module": "numpy", - "module_short": "numpy", - "name": "ndarray" - } - ], - "ch": [ - { - "is_class": false, - "is_explicit": false, - "module": "builtins", - "module_short": "builtins", - "name": "int" - } - ], - "chunk": [ - { - "is_class": false, - "is_explicit": false, - "module": "builtins", - "module_short": "builtins", - "name": "str" - } - ], - "chunk_duration": [ - { - "is_class": false, - "is_explicit": false, - "module": "builtins", - "module_short": "builtins", - "name": "str" - } - ], - "chunk_durations": [ - { - "is_class": false, - "is_explicit": false, - "module": "builtins", - "module_short": "builtins", - "name": "list" - } - ], - "data": [ - { - "is_class": false, - "is_explicit": false, - "module": "builtins", - "module_short": "builtins", - "name": "dict" - } - ], - "df": [ - { - "is_class": false, - "is_explicit": false, - "module": "pandas.core.frame", - "module_short": "pandas.core.frame", - "name": "DataFrame" - }, - { - "is_class": false, - "is_explicit": false, - "module": "pandas.core", - "module_short": "pandas.core", - "name": "DataFrame" - }, - { - "is_class": false, - "is_explicit": false, - "module": "pandas", - "module_short": "pandas", - "name": "DataFrame" - } - ], - "diff": [ - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core.operatorrecordings", - "module_short": "spikeinterface.core.operatorrecordings", - "name": "SubtractRecordings" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core", - "module_short": "spikeinterface.core", - "name": "SubtractRecordings" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "SubtractRecordings" - } - ], - "diff.get_traces": [ - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core.operatorrecordings", - "module_short": "spikeinterface.core.operatorrecordings", - "name": "SubtractRecordings.get_traces" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core", - "module_short": "spikeinterface.core", - "name": "SubtractRecordings.get_traces" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "SubtractRecordings.get_traces" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core.operatorrecordings", - "module_short": "spikeinterface.core.operatorrecordings", - "name": "BaseOperatorRecording.get_traces" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core", - "module_short": "spikeinterface.core", - "name": "BaseOperatorRecording.get_traces" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "BaseOperatorRecording.get_traces" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core.baserecording", - "module_short": "spikeinterface", - "name": "BaseRecording.get_traces" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core", - "module_short": "spikeinterface", - "name": "BaseRecording.get_traces" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "BaseRecording.get_traces" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core.baserecordingsnippets", - "module_short": "spikeinterface.core.baserecordingsnippets", - "name": "BaseRecordingSnippets.get_traces" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core", - "module_short": "spikeinterface.core", - "name": "BaseRecordingSnippets.get_traces" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "BaseRecordingSnippets.get_traces" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core.base", - "module_short": "spikeinterface.core.base", - "name": "BaseExtractor.get_traces" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core", - "module_short": "spikeinterface.core", - "name": "BaseExtractor.get_traces" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "BaseExtractor.get_traces" - } - ], - "end_frame": [ - { - "is_class": false, - "is_explicit": false, - "module": "builtins", - "module_short": "builtins", - "name": "int" - } - ], - "end_time": [ - { - "is_class": false, - "is_explicit": false, - "module": "builtins", - "module_short": "builtins", - "name": "int" - } - ], - "error": [ - { - "is_class": false, - "is_explicit": false, - "module": "numpy", - "module_short": "numpy", - "name": "float32" - } - ], - "fig": [ - { - "is_class": false, - "is_explicit": false, - "module": "matplotlib.figure", - "module_short": "matplotlib.figure", - "name": "Figure" - }, - { - "is_class": false, - "is_explicit": false, - "module": "matplotlib", - "module_short": "matplotlib", - "name": "Figure" - } - ], - "freq_alpha": [ - { - "is_class": false, - "is_explicit": false, - "module": "builtins", - "module_short": "builtins", - "name": "float" - } - ], - "freq_beta": [ - { - "is_class": false, - "is_explicit": false, - "module": "builtins", - "module_short": "builtins", - "name": "float" - } - ], - "freq_theta": [ - { - "is_class": false, - "is_explicit": false, - "module": "builtins", - "module_short": "builtins", - "name": "float" - } - ], - "generate_ground_truth_recording": [ - { - "is_class": false, - "is_explicit": false, - "module": "builtins", - "module_short": "builtins", - "name": "function" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core", - "module_short": "spikeinterface", - "name": "generate_ground_truth_recording" - } - ], - "lfp_signals": [ - { - "is_class": false, - "is_explicit": false, - "module": "numpy", - "module_short": "numpy", - "name": "ndarray" - } - ], - "margin": [ - { - "is_class": false, - "is_explicit": false, - "module": "builtins", - "module_short": "builtins", - "name": "int" - } - ], - "margin_in_s": [ - { - "is_class": false, - "is_explicit": false, - "module": "builtins", - "module_short": "builtins", - "name": "float" - } - ], - "margin_ms": [ - { - "is_class": false, - "is_explicit": false, - "module": "builtins", - "module_short": "builtins", - "name": "int" - } - ], - "margins_ms": [ - { - "is_class": false, - "is_explicit": false, - "module": "builtins", - "module_short": "builtins", - "name": "list" - } - ], - "np.abs": [ - { - "is_class": false, - "is_explicit": false, - "module": "numpy", - "module_short": "numpy", - "name": "ufunc" - }, - { - "is_class": false, - "is_explicit": false, - "module": "numpy", - "module_short": "numpy", - "name": "abs" - } - ], - "np.pi": [ - { - "is_class": false, - "is_explicit": false, - "module": "builtins", - "module_short": "builtins", - "name": "float" - }, - { - "is_class": false, - "is_explicit": false, - "module": "numpy", - "module_short": "numpy", - "name": "pi" - } - ], - "np.random.default_rng": [ - { - "is_class": false, - "is_explicit": false, - "module": "_cython_3_1_4", - "module_short": "_cython_3_1_4", - "name": "cython_function_or_method" - }, - { - "is_class": false, - "is_explicit": false, - "module": "numpy.random", - "module_short": "numpy.random", - "name": "default_rng" - } - ], - "np.sin": [ - { - "is_class": false, - "is_explicit": false, - "module": "numpy", - "module_short": "numpy", - "name": "ufunc" - }, - { - "is_class": false, - "is_explicit": false, - "module": "numpy", - "module_short": "numpy", - "name": "sin" - } - ], - "np.sum": [ - { - "is_class": false, - "is_explicit": false, - "module": "numpy", - "module_short": "numpy", - "name": "_ArrayFunctionDispatcher" - }, - { - "is_class": false, - "is_explicit": false, - "module": "numpy", - "module_short": "numpy", - "name": "sum" - } - ], - "np.zeros": [ - { - "is_class": false, - "is_explicit": false, - "module": "builtins", - "module_short": "builtins", - "name": "builtin_function_or_method" - }, - { - "is_class": false, - "is_explicit": false, - "module": "numpy", - "module_short": "numpy", - "name": "zeros" - } - ], - "num_channels": [ - { - "is_class": false, - "is_explicit": false, - "module": "builtins", - "module_short": "builtins", - "name": "int" - } - ], - "pd.DataFrame": [ - { - "is_class": true, - "is_explicit": false, - "module": "pandas.core.frame", - "module_short": "pandas.core.frame", - "name": "DataFrame" - }, - { - "is_class": true, - "is_explicit": false, - "module": "pandas.core", - "module_short": "pandas.core", - "name": "DataFrame" - }, - { - "is_class": true, - "is_explicit": false, - "module": "pandas", - "module_short": "pandas", - "name": "DataFrame" - }, - { - "is_class": true, - "is_explicit": false, - "module": "pandas.core.generic", - "module_short": "pandas.core.generic", - "name": "NDFrame" - }, - { - "is_class": true, - "is_explicit": false, - "module": "pandas.core", - "module_short": "pandas.core", - "name": "NDFrame" - }, - { - "is_class": true, - "is_explicit": false, - "module": "pandas", - "module_short": "pandas", - "name": "NDFrame" - }, - { - "is_class": true, - "is_explicit": false, - "module": "pandas.core.arraylike", - "module_short": "pandas.core.arraylike", - "name": "OpsMixin" - }, - { - "is_class": true, - "is_explicit": false, - "module": "pandas.core", - "module_short": "pandas.core", - "name": "OpsMixin" - }, - { - "is_class": true, - "is_explicit": false, - "module": "pandas", - "module_short": "pandas", - "name": "OpsMixin" - }, - { - "is_class": true, - "is_explicit": false, - "module": "pandas.core.base", - "module_short": "pandas.core.base", - "name": "PandasObject" - }, - { - "is_class": true, - "is_explicit": false, - "module": "pandas.core", - "module_short": "pandas.core", - "name": "PandasObject" - }, - { - "is_class": true, - "is_explicit": false, - "module": "pandas", - "module_short": "pandas", - "name": "PandasObject" - }, - { - "is_class": true, - "is_explicit": false, - "module": "pandas.core.indexing", - "module_short": "pandas.core.indexing", - "name": "IndexingMixin" - }, - { - "is_class": true, - "is_explicit": false, - "module": "pandas.core", - "module_short": "pandas.core", - "name": "IndexingMixin" - }, - { - "is_class": true, - "is_explicit": false, - "module": "pandas", - "module_short": "pandas", - "name": "IndexingMixin" - }, - { - "is_class": true, - "is_explicit": false, - "module": "pandas.core.accessor", - "module_short": "pandas.core.accessor", - "name": "DirNamesMixin" - }, - { - "is_class": true, - "is_explicit": false, - "module": "pandas.core", - "module_short": "pandas.core", - "name": "DirNamesMixin" - }, - { - "is_class": true, - "is_explicit": false, - "module": "pandas", - "module_short": "pandas", - "name": "DirNamesMixin" - }, - { - "is_class": false, - "is_explicit": false, - "module": "pandas", - "module_short": "pandas", - "name": "DataFrame" - } - ], - "phase_alpha": [ - { - "is_class": false, - "is_explicit": false, - "module": "builtins", - "module_short": "builtins", - "name": "float" - } - ], - "phase_beta": [ - { - "is_class": false, - "is_explicit": false, - "module": "builtins", - "module_short": "builtins", - "name": "float" - } - ], - "phase_theta": [ - { - "is_class": false, - "is_explicit": false, - "module": "builtins", - "module_short": "builtins", - "name": "float" - } - ], - "plt.subplots": [ - { - "is_class": false, - "is_explicit": false, - "module": "builtins", - "module_short": "builtins", - "name": "function" - }, - { - "is_class": false, - "is_explicit": false, - "module": "matplotlib.pyplot", - "module_short": "matplotlib.pyplot", - "name": "subplots" - } - ], - "recording": [ - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core.generate", - "module_short": "spikeinterface", - "name": "InjectTemplatesRecording" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core", - "module_short": "spikeinterface", - "name": "InjectTemplatesRecording" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "InjectTemplatesRecording" - } - ], - "recording.channel_ids": [ - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core.generate", - "module_short": "spikeinterface", - "name": "InjectTemplatesRecording.channel_ids" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core", - "module_short": "spikeinterface", - "name": "InjectTemplatesRecording.channel_ids" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "InjectTemplatesRecording.channel_ids" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core.baserecording", - "module_short": "spikeinterface", - "name": "BaseRecording.channel_ids" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core", - "module_short": "spikeinterface", - "name": "BaseRecording.channel_ids" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "BaseRecording.channel_ids" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core.baserecordingsnippets", - "module_short": "spikeinterface", - "name": "BaseRecordingSnippets.channel_ids" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core", - "module_short": "spikeinterface", - "name": "BaseRecordingSnippets.channel_ids" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "BaseRecordingSnippets.channel_ids" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core.base", - "module_short": "spikeinterface.core.base", - "name": "BaseExtractor.channel_ids" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core", - "module_short": "spikeinterface.core", - "name": "BaseExtractor.channel_ids" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "BaseExtractor.channel_ids" - } - ], - "recording.get_num_channels": [ - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core.generate", - "module_short": "spikeinterface", - "name": "InjectTemplatesRecording.get_num_channels" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core", - "module_short": "spikeinterface", - "name": "InjectTemplatesRecording.get_num_channels" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "InjectTemplatesRecording.get_num_channels" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core.baserecording", - "module_short": "spikeinterface", - "name": "BaseRecording.get_num_channels" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core", - "module_short": "spikeinterface", - "name": "BaseRecording.get_num_channels" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "BaseRecording.get_num_channels" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core.baserecordingsnippets", - "module_short": "spikeinterface", - "name": "BaseRecordingSnippets.get_num_channels" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core", - "module_short": "spikeinterface", - "name": "BaseRecordingSnippets.get_num_channels" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "BaseRecordingSnippets.get_num_channels" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core.base", - "module_short": "spikeinterface.core.base", - "name": "BaseExtractor.get_num_channels" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core", - "module_short": "spikeinterface.core", - "name": "BaseExtractor.get_num_channels" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "BaseExtractor.get_num_channels" - } - ], - "recording.get_num_samples": [ - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core.generate", - "module_short": "spikeinterface", - "name": "InjectTemplatesRecording.get_num_samples" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core", - "module_short": "spikeinterface", - "name": "InjectTemplatesRecording.get_num_samples" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "InjectTemplatesRecording.get_num_samples" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core.baserecording", - "module_short": "spikeinterface", - "name": "BaseRecording.get_num_samples" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core", - "module_short": "spikeinterface", - "name": "BaseRecording.get_num_samples" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "BaseRecording.get_num_samples" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core.baserecordingsnippets", - "module_short": "spikeinterface.core.baserecordingsnippets", - "name": "BaseRecordingSnippets.get_num_samples" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core", - "module_short": "spikeinterface.core", - "name": "BaseRecordingSnippets.get_num_samples" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "BaseRecordingSnippets.get_num_samples" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core.base", - "module_short": "spikeinterface.core.base", - "name": "BaseExtractor.get_num_samples" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core", - "module_short": "spikeinterface.core", - "name": "BaseExtractor.get_num_samples" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "BaseExtractor.get_num_samples" - } - ], - "recording.get_times": [ - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core.generate", - "module_short": "spikeinterface", - "name": "InjectTemplatesRecording.get_times" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core", - "module_short": "spikeinterface", - "name": "InjectTemplatesRecording.get_times" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "InjectTemplatesRecording.get_times" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core.baserecording", - "module_short": "spikeinterface", - "name": "BaseRecording.get_times" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core", - "module_short": "spikeinterface", - "name": "BaseRecording.get_times" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "BaseRecording.get_times" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core.baserecordingsnippets", - "module_short": "spikeinterface.core.baserecordingsnippets", - "name": "BaseRecordingSnippets.get_times" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core", - "module_short": "spikeinterface.core", - "name": "BaseRecordingSnippets.get_times" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "BaseRecordingSnippets.get_times" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core.base", - "module_short": "spikeinterface.core.base", - "name": "BaseExtractor.get_times" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core", - "module_short": "spikeinterface.core", - "name": "BaseExtractor.get_times" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "BaseExtractor.get_times" - } - ], - "recording.sampling_frequency": [ - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core.generate", - "module_short": "spikeinterface", - "name": "InjectTemplatesRecording.sampling_frequency" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core", - "module_short": "spikeinterface", - "name": "InjectTemplatesRecording.sampling_frequency" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "InjectTemplatesRecording.sampling_frequency" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core.baserecording", - "module_short": "spikeinterface", - "name": "BaseRecording.sampling_frequency" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core", - "module_short": "spikeinterface", - "name": "BaseRecording.sampling_frequency" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "BaseRecording.sampling_frequency" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core.baserecordingsnippets", - "module_short": "spikeinterface", - "name": "BaseRecordingSnippets.sampling_frequency" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core", - "module_short": "spikeinterface", - "name": "BaseRecordingSnippets.sampling_frequency" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "BaseRecordingSnippets.sampling_frequency" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core.base", - "module_short": "spikeinterface.core.base", - "name": "BaseExtractor.sampling_frequency" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core", - "module_short": "spikeinterface.core", - "name": "BaseExtractor.sampling_frequency" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "BaseExtractor.sampling_frequency" - } - ], - "recording_chunk": [ - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core.numpyextractors", - "module_short": "spikeinterface", - "name": "SharedMemoryRecording" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core", - "module_short": "spikeinterface", - "name": "SharedMemoryRecording" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "SharedMemoryRecording" - } - ], - "recording_chunk.get_traces": [ - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core.numpyextractors", - "module_short": "spikeinterface", - "name": "SharedMemoryRecording.get_traces" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core", - "module_short": "spikeinterface", - "name": "SharedMemoryRecording.get_traces" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "SharedMemoryRecording.get_traces" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core.baserecording", - "module_short": "spikeinterface", - "name": "BaseRecording.get_traces" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core", - "module_short": "spikeinterface", - "name": "BaseRecording.get_traces" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "BaseRecording.get_traces" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core.baserecordingsnippets", - "module_short": "spikeinterface.core.baserecordingsnippets", - "name": "BaseRecordingSnippets.get_traces" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core", - "module_short": "spikeinterface.core", - "name": "BaseRecordingSnippets.get_traces" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "BaseRecordingSnippets.get_traces" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core.base", - "module_short": "spikeinterface.core.base", - "name": "BaseExtractor.get_traces" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core", - "module_short": "spikeinterface.core", - "name": "BaseExtractor.get_traces" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "BaseExtractor.get_traces" - } - ], - "recording_chunk.save": [ - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core.numpyextractors", - "module_short": "spikeinterface", - "name": "SharedMemoryRecording.save" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core", - "module_short": "spikeinterface", - "name": "SharedMemoryRecording.save" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "SharedMemoryRecording.save" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core.baserecording", - "module_short": "spikeinterface", - "name": "BaseRecording.save" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core", - "module_short": "spikeinterface", - "name": "BaseRecording.save" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "BaseRecording.save" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core.baserecordingsnippets", - "module_short": "spikeinterface", - "name": "BaseRecordingSnippets.save" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core", - "module_short": "spikeinterface", - "name": "BaseRecordingSnippets.save" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "BaseRecordingSnippets.save" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core.base", - "module_short": "spikeinterface.core.base", - "name": "BaseExtractor.save" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core", - "module_short": "spikeinterface.core", - "name": "BaseExtractor.save" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "BaseExtractor.save" - } - ], - "recording_dict": [ - { - "is_class": false, - "is_explicit": false, - "module": "builtins", - "module_short": "builtins", - "name": "dict" - } - ], - "recording_filt": [ - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.preprocessing.filter", - "module_short": "spikeinterface.preprocessing.filter", - "name": "BandpassFilterRecording" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.preprocessing", - "module_short": "spikeinterface.preprocessing", - "name": "BandpassFilterRecording" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "BandpassFilterRecording" - } - ], - "recording_filt.margin_samples": [ - { - "is_class": false, - "is_explicit": false, - "module": "builtins", - "module_short": "builtins", - "name": "int" - } - ], - "recording_filt.save": [ - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.preprocessing.filter", - "module_short": "spikeinterface.preprocessing.filter", - "name": "BandpassFilterRecording.save" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.preprocessing", - "module_short": "spikeinterface.preprocessing", - "name": "BandpassFilterRecording.save" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "BandpassFilterRecording.save" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.preprocessing.filter", - "module_short": "spikeinterface.preprocessing.filter", - "name": "FilterRecording.save" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.preprocessing", - "module_short": "spikeinterface.preprocessing", - "name": "FilterRecording.save" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "FilterRecording.save" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.preprocessing.basepreprocessor", - "module_short": "spikeinterface.preprocessing.basepreprocessor", - "name": "BasePreprocessor.save" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.preprocessing", - "module_short": "spikeinterface.preprocessing", - "name": "BasePreprocessor.save" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "BasePreprocessor.save" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core.baserecording", - "module_short": "spikeinterface", - "name": "BaseRecording.save" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core", - "module_short": "spikeinterface", - "name": "BaseRecording.save" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "BaseRecording.save" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core.baserecordingsnippets", - "module_short": "spikeinterface", - "name": "BaseRecordingSnippets.save" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core", - "module_short": "spikeinterface", - "name": "BaseRecordingSnippets.save" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "BaseRecordingSnippets.save" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core.base", - "module_short": "spikeinterface.core.base", - "name": "BaseExtractor.save" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core", - "module_short": "spikeinterface.core", - "name": "BaseExtractor.save" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "BaseExtractor.save" - } - ], - "recording_key": [ - { - "is_class": false, - "is_explicit": false, - "module": "builtins", - "module_short": "builtins", - "name": "tuple" - } - ], - "recording_lfp": [ - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core.numpyextractors", - "module_short": "spikeinterface", - "name": "NumpyRecording" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core", - "module_short": "spikeinterface", - "name": "NumpyRecording" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "NumpyRecording" - } - ], - "recording_lfp.sampling_frequency": [ - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core.numpyextractors", - "module_short": "spikeinterface", - "name": "NumpyRecording.sampling_frequency" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core", - "module_short": "spikeinterface", - "name": "NumpyRecording.sampling_frequency" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "NumpyRecording.sampling_frequency" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core.baserecording", - "module_short": "spikeinterface", - "name": "BaseRecording.sampling_frequency" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core", - "module_short": "spikeinterface", - "name": "BaseRecording.sampling_frequency" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "BaseRecording.sampling_frequency" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core.baserecordingsnippets", - "module_short": "spikeinterface", - "name": "BaseRecordingSnippets.sampling_frequency" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core", - "module_short": "spikeinterface", - "name": "BaseRecordingSnippets.sampling_frequency" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "BaseRecordingSnippets.sampling_frequency" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core.base", - "module_short": "spikeinterface.core.base", - "name": "BaseExtractor.sampling_frequency" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core", - "module_short": "spikeinterface.core", - "name": "BaseExtractor.sampling_frequency" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "BaseExtractor.sampling_frequency" - } - ], - "recording_optimal": [ - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core.numpyextractors", - "module_short": "spikeinterface", - "name": "SharedMemoryRecording" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core", - "module_short": "spikeinterface", - "name": "SharedMemoryRecording" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "SharedMemoryRecording" - } - ], - "recording_optimal.get_times": [ - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core.numpyextractors", - "module_short": "spikeinterface", - "name": "SharedMemoryRecording.get_times" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core", - "module_short": "spikeinterface", - "name": "SharedMemoryRecording.get_times" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "SharedMemoryRecording.get_times" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core.baserecording", - "module_short": "spikeinterface", - "name": "BaseRecording.get_times" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core", - "module_short": "spikeinterface", - "name": "BaseRecording.get_times" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "BaseRecording.get_times" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core.baserecordingsnippets", - "module_short": "spikeinterface.core.baserecordingsnippets", - "name": "BaseRecordingSnippets.get_times" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core", - "module_short": "spikeinterface.core", - "name": "BaseRecordingSnippets.get_times" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "BaseRecordingSnippets.get_times" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core.base", - "module_short": "spikeinterface.core.base", - "name": "BaseExtractor.get_times" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core", - "module_short": "spikeinterface.core", - "name": "BaseExtractor.get_times" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "BaseExtractor.get_times" - } - ], - "recording_optimal.get_traces": [ - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core.numpyextractors", - "module_short": "spikeinterface", - "name": "SharedMemoryRecording.get_traces" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core", - "module_short": "spikeinterface", - "name": "SharedMemoryRecording.get_traces" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "SharedMemoryRecording.get_traces" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core.baserecording", - "module_short": "spikeinterface", - "name": "BaseRecording.get_traces" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core", - "module_short": "spikeinterface", - "name": "BaseRecording.get_traces" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "BaseRecording.get_traces" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core.baserecordingsnippets", - "module_short": "spikeinterface.core.baserecordingsnippets", - "name": "BaseRecordingSnippets.get_traces" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core", - "module_short": "spikeinterface.core", - "name": "BaseRecordingSnippets.get_traces" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "BaseRecordingSnippets.get_traces" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core.base", - "module_short": "spikeinterface.core.base", - "name": "BaseExtractor.get_traces" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core", - "module_short": "spikeinterface.core", - "name": "BaseExtractor.get_traces" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "BaseExtractor.get_traces" - } - ], - "recording_optimal.sampling_frequency": [ - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core.numpyextractors", - "module_short": "spikeinterface", - "name": "SharedMemoryRecording.sampling_frequency" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core", - "module_short": "spikeinterface", - "name": "SharedMemoryRecording.sampling_frequency" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "SharedMemoryRecording.sampling_frequency" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core.baserecording", - "module_short": "spikeinterface", - "name": "BaseRecording.sampling_frequency" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core", - "module_short": "spikeinterface", - "name": "BaseRecording.sampling_frequency" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "BaseRecording.sampling_frequency" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core.baserecordingsnippets", - "module_short": "spikeinterface", - "name": "BaseRecordingSnippets.sampling_frequency" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core", - "module_short": "spikeinterface", - "name": "BaseRecordingSnippets.sampling_frequency" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "BaseRecordingSnippets.sampling_frequency" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core.base", - "module_short": "spikeinterface.core.base", - "name": "BaseExtractor.sampling_frequency" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core", - "module_short": "spikeinterface.core", - "name": "BaseExtractor.sampling_frequency" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "BaseExtractor.sampling_frequency" - } - ], - "recording_with_lfp": [ - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core.operatorrecordings", - "module_short": "spikeinterface.core.operatorrecordings", - "name": "AddRecordings" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core", - "module_short": "spikeinterface.core", - "name": "AddRecordings" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "AddRecordings" - } - ], - "recordings_chunked": [ - { - "is_class": false, - "is_explicit": false, - "module": "builtins", - "module_short": "builtins", - "name": "dict" - } - ], - "recordings_chunked.items": [ - { - "is_class": false, - "is_explicit": false, - "module": "builtins", - "module_short": "builtins", - "name": "builtin_function_or_method" - } - ], - "result_dict": [ - { - "is_class": false, - "is_explicit": false, - "module": "builtins", - "module_short": "builtins", - "name": "dict" - } - ], - "rng": [ - { - "is_class": false, - "is_explicit": false, - "module": "numpy.random._generator", - "module_short": "numpy.random", - "name": "Generator" - }, - { - "is_class": false, - "is_explicit": false, - "module": "numpy.random", - "module_short": "numpy.random", - "name": "Generator" - }, - { - "is_class": false, - "is_explicit": false, - "module": "numpy", - "module_short": "numpy", - "name": "Generator" - } - ], - "rng.random": [ - { - "is_class": false, - "is_explicit": false, - "module": "numpy.random._generator", - "module_short": "numpy.random", - "name": "Generator.random" - }, - { - "is_class": false, - "is_explicit": false, - "module": "numpy.random", - "module_short": "numpy.random", - "name": "Generator.random" - }, - { - "is_class": false, - "is_explicit": false, - "module": "numpy", - "module_short": "numpy", - "name": "Generator.random" - } - ], - "si.NumpyRecording": [ - { - "is_class": true, - "is_explicit": false, - "module": "spikeinterface.core.numpyextractors", - "module_short": "spikeinterface", - "name": "NumpyRecording" - }, - { - "is_class": true, - "is_explicit": false, - "module": "spikeinterface.core", - "module_short": "spikeinterface", - "name": "NumpyRecording" - }, - { - "is_class": true, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "NumpyRecording" - }, - { - "is_class": true, - "is_explicit": false, - "module": "spikeinterface.core.baserecording", - "module_short": "spikeinterface", - "name": "BaseRecording" - }, - { - "is_class": true, - "is_explicit": false, - "module": "spikeinterface.core", - "module_short": "spikeinterface", - "name": "BaseRecording" - }, - { - "is_class": true, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "BaseRecording" - }, - { - "is_class": true, - "is_explicit": false, - "module": "spikeinterface.core.baserecordingsnippets", - "module_short": "spikeinterface", - "name": "BaseRecordingSnippets" - }, - { - "is_class": true, - "is_explicit": false, - "module": "spikeinterface.core", - "module_short": "spikeinterface", - "name": "BaseRecordingSnippets" - }, - { - "is_class": true, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "BaseRecordingSnippets" - }, - { - "is_class": true, - "is_explicit": false, - "module": "spikeinterface.core.base", - "module_short": "spikeinterface.core.base", - "name": "BaseExtractor" - }, - { - "is_class": true, - "is_explicit": false, - "module": "spikeinterface.core", - "module_short": "spikeinterface.core", - "name": "BaseExtractor" - }, - { - "is_class": true, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "BaseExtractor" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "NumpyRecording" - } - ], - "sns.barplot": [ - { - "is_class": false, - "is_explicit": false, - "module": "builtins", - "module_short": "builtins", - "name": "function" - }, - { - "is_class": false, - "is_explicit": false, - "module": "seaborn", - "module_short": "seaborn", - "name": "barplot" - } - ], - "sns.despine": [ - { - "is_class": false, - "is_explicit": false, - "module": "builtins", - "module_short": "builtins", - "name": "function" - }, - { - "is_class": false, - "is_explicit": false, - "module": "seaborn", - "module_short": "seaborn", - "name": "despine" - } - ], - "sorting": [ - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core.numpyextractors", - "module_short": "spikeinterface", - "name": "NumpySorting" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core", - "module_short": "spikeinterface", - "name": "NumpySorting" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "NumpySorting" - } - ], - "spre.bandpass_filter": [ - { - "is_class": false, - "is_explicit": false, - "module": "builtins", - "module_short": "builtins", - "name": "function" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.preprocessing", - "module_short": "spikeinterface.preprocessing", - "name": "bandpass_filter" - } - ], - "start_frame": [ - { - "is_class": false, - "is_explicit": false, - "module": "builtins", - "module_short": "builtins", - "name": "int" - } - ], - "start_time": [ - { - "is_class": false, - "is_explicit": false, - "module": "builtins", - "module_short": "builtins", - "name": "int" - } - ], - "sw.plot_traces": [ - { - "is_class": true, - "is_explicit": false, - "module": "spikeinterface.widgets.traces", - "module_short": "spikeinterface.widgets", - "name": "TracesWidget" - }, - { - "is_class": true, - "is_explicit": false, - "module": "spikeinterface.widgets", - "module_short": "spikeinterface.widgets", - "name": "TracesWidget" - }, - { - "is_class": true, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "TracesWidget" - }, - { - "is_class": true, - "is_explicit": false, - "module": "spikeinterface.widgets.base", - "module_short": "spikeinterface.widgets.base", - "name": "BaseWidget" - }, - { - "is_class": true, - "is_explicit": false, - "module": "spikeinterface.widgets", - "module_short": "spikeinterface.widgets", - "name": "BaseWidget" - }, - { - "is_class": true, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "BaseWidget" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.widgets", - "module_short": "spikeinterface.widgets", - "name": "plot_traces" - } - ], - "t_start": [ - { - "is_class": false, - "is_explicit": false, - "module": "builtins", - "module_short": "builtins", - "name": "float" - } - ], - "t_stop": [ - { - "is_class": false, - "is_explicit": false, - "module": "builtins", - "module_short": "builtins", - "name": "float" - } - ], - "time": [ - { - "is_class": false, - "is_explicit": false, - "module": "builtins", - "module_short": "builtins", - "name": "float" - }, - { - "is_class": false, - "is_explicit": false, - "module": "builtins", - "module_short": "builtins", - "name": "time" - } - ], - "time.perf_counter": [ - { - "is_class": false, - "is_explicit": false, - "module": "builtins", - "module_short": "builtins", - "name": "float" - }, - { - "is_class": false, - "is_explicit": false, - "module": "time", - "module_short": "time", - "name": "perf_counter" - } - ], - "time_vector": [ - { - "is_class": false, - "is_explicit": false, - "module": "numpy", - "module_short": "numpy", - "name": "ndarray" - } - ], - "timestamps": [ - { - "is_class": false, - "is_explicit": false, - "module": "numpy", - "module_short": "numpy", - "name": "ndarray" - } - ], - "trace_plotted": [ - { - "is_class": false, - "is_explicit": false, - "module": "builtins", - "module_short": "builtins", - "name": "bool" - } - ], - "traces_chunk": [ - { - "is_class": false, - "is_explicit": false, - "module": "numpy", - "module_short": "numpy", - "name": "ndarray" - } - ], - "traces_diff": [ - { - "is_class": false, - "is_explicit": false, - "module": "numpy", - "module_short": "numpy", - "name": "ndarray" - } - ], - "traces_opt": [ - { - "is_class": false, - "is_explicit": false, - "module": "numpy", - "module_short": "numpy", - "name": "ndarray" - } - ], - "traces_optimal": [ - { - "is_class": false, - "is_explicit": false, - "module": "numpy", - "module_short": "numpy", - "name": "ndarray" - } - ] -} diff --git a/doc/forhowto/plot_extract_lfps.ipynb b/doc/forhowto/plot_extract_lfps.ipynb deleted file mode 100644 index 8f72547112..0000000000 --- a/doc/forhowto/plot_extract_lfps.ipynb +++ /dev/null @@ -1,316 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n# Extract LFPs\n\nUnderstanding filtering artifacts and chunking when extracting LFPs\n\nLocal Field Potentials (LFPs) are low-frequency signals (<300 Hz) that reflect the summed activity of many neurons.\nExtracting LFPs from high-sampling-rate recordings requires bandpass filtering, but this can introduce artifacts\nwhen not done carefully, especially when data is processed in chunks (for memory efficiency).\n\nThis tutorial demonstrates:\n\n1. How to generate simulated LFP data\n2. Common pitfalls when filtering with low cutoff frequencies\n3. How chunking and margins affect filtering artifacts\n4. Summary\n\n**Key takeaway**: For LFP extraction, use large chunks (30-60s) and large margins (several seconds) to minimize\nedge artifacts, even though this is less memory-efficient.\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Import necessary modules\n\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "import time\nimport numpy as np\nimport matplotlib.pyplot as plt\nfrom pathlib import Path\nimport pandas as pd\nimport seaborn as sns\n\nimport spikeinterface as si\nimport spikeinterface.extractors as se\nimport spikeinterface.preprocessing as spre\nimport spikeinterface.widgets as sw\nfrom spikeinterface.core import generate_ground_truth_recording" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 1. Generate simulated recording with low-frequency signals\n\nLet's create a simulated recording and add some low-frequency sinusoids that mimic LFP activity.\n\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "# Generate a ground truth recording with spikes\n# Use a higher sampling rate (30 kHz) to simulate raw neural data\nrecording, sorting = generate_ground_truth_recording(\n durations=[300.0], # 300 s\n sampling_frequency=30000.0,\n num_channels=1,\n num_units=4,\n seed=2305,\n)\n\nprint(recording)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now let's add some low-frequency sinusoidal components to simulate LFP signals\n\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "# Add low-frequency sinusoids with different frequencies and phases per channel\nrng = np.random.default_rng(42)\nnum_channels = recording.get_num_channels()\nlfp_signals = np.zeros(\n (recording.get_num_samples(), recording.get_num_channels())\n)\ntime_vector = recording.get_times()\n\nfor ch in range(num_channels):\n # Add multiple frequency components (theta, alpha, beta ranges)\n # Theta-like: 4-8 Hz\n freq_theta = 4 + rng.random() * 4\n phase_theta = rng.random() * 2 * np.pi\n amp_theta = 50 + rng.random() * 50\n\n # Alpha-like: 8-12 Hz\n freq_alpha = 8 + rng.random() * 4\n phase_alpha = rng.random() * 2 * np.pi\n amp_alpha = 30 + rng.random() * 30\n\n # Beta-like: 12-30 Hz\n freq_beta = 12 + rng.random() * 18\n phase_beta = rng.random() * 2 * np.pi\n amp_beta = 20 + rng.random() * 20\n\n lfp_signals[:, ch] = (\n amp_theta * np.sin(2 * np.pi * freq_theta * time_vector + phase_theta)\n + amp_alpha * np.sin(2 * np.pi * freq_alpha * time_vector + phase_alpha)\n + amp_beta * np.sin(2 * np.pi * freq_beta * time_vector + phase_beta)\n )\n\n# Create a recording with the added LFP signals\nrecording_lfp = si.NumpyRecording(\n traces_list=[lfp_signals],\n sampling_frequency=recording.sampling_frequency,\n channel_ids=recording.channel_ids,\n)\nrecording_with_lfp = recording + recording_lfp" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let's visualize a short segment of the signal\n\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "_ = sw.plot_traces(recording_with_lfp, time_range=[0, 3])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 2. Filtering with low cutoff frequencies: the problem\n\nNow let's try to extract LFPs using a bandpass filter with a low highpass cutoff (1 Hz).\nThis will demonstrate a common issue.\n\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "# Try to filter with 1 Hz highpass\ntry:\n recording_lfp_1hz = spre.bandpass_filter(\n recording_with_lfp, freq_min=1.0, freq_max=300.0\n )\nexcept Exception as e:\n print(f\"Error message:\\n{str(e)}\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**Why does this fail?**\n\nThe error occurs because by default in SpikeInterface when highpass filtering below 100 Hz.\nFilters with very low cutoff frequencies have long impulse responses, which require larger margins to avoid edge artifacts between chunks.\n\nThe filter length (and required margin) scales inversely with the highpass frequency. A 1 Hz highpass\nfilter requires a margin of several seconds, while a 300 Hz highpass (for spike extraction) only needs\na few milliseconds.\n\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 3. Understanding chunking and margins\n\nSpikeInterface processes recordings in chunks to handle large datasets efficiently. Each chunk needs\na \"margin\" (extra samples at the edges) to avoid edge artifacts when filtering. Let's demonstrate\nthis by saving the filtered data with different chunking strategies.\n\n**This error is to inform the user that extra care should be used when dealing with LFP signals!**\n\nWe can ignore this error, but let's make sure we understand what it's happening.\n\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "# We can ignore this error, but let's see what is happening\nrecording_filt = spre.bandpass_filter(\n recording_with_lfp, freq_min=1.0, freq_max=300.0, ignore_low_freq_error=True\n)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "When retrieving traces, extra samples will be retrieved at the left and right edges.\nBy default, the filter function will set a margin to 5x the sampling period associated to `freq_min`.\nSo for a 1 Hz cutoff frequency, the margin will be 5 seconds!\n\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "margin_in_s = recording_filt.margin_samples / recording_lfp.sampling_frequency\nprint(f\"Margin: {margin_in_s} s\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This effectively means that if we plot 1-s snippet of traces, a total of 11 s will actually be read and filtered.\nNote that the margin can be overridden with the `margin_ms` argument, but we do not recommend changing it.\n\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "_ = sw.plot_traces(recording_filt, time_range=[20, 21])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "A warning tells us that what we are doing is not optimized, since in order to get the requested traces\nthe margin \"overhead\" is very large.\n\nIf we ask or plot longer snippets, the warning is not displayed.\n\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "_ = sw.plot_traces(recording_filt, time_range=[20, 80])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 4. Quantification and visualization of the artifacts\n\nLet's extract the traces and visualize the differences between chunking strategies.\nWe'll focus on the chunk boundaries where artifacts appear.\n\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "margins_ms = [100, 1000, 5000]\nchunk_durations = [\"1s\", \"10s\", \"30s\"]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The best we can do is to save the full recording in one chunk. This will cause no artifacts and chunking effects,\nbut in practice it's not possible due to the duration and number of channels of most setups.\n\nSince in this toy case we have a single channel 5-min recording, we can use this as \"optimal\".\n\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "recording_optimal = recording_filt.save(\n format=\"memory\",\n chunk_duration=\"1000s\",\n progress_bar=False\n)\n\nprint(recording_optimal)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now we can do the same with our various options:\n\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "recordings_chunked = {}\n\nfor margin_ms in margins_ms:\n for chunk_duration in chunk_durations:\n print(f\"Margin ms: {margin_ms} - Chunk duration: {chunk_duration}\")\n t_start = time.perf_counter()\n recording_chunk = spre.bandpass_filter(\n recording_with_lfp,\n freq_min=1.0,\n freq_max=300.0,\n margin_ms=margin_ms,\n ignore_low_freq_error=True,\n )\n recording_chunk = recording_chunk.save(\n format=\"memory\",\n chunk_duration=chunk_duration,\n verbose=False,\n progress_bar=False\n )\n t_stop = time.perf_counter()\n result_dict = {\"recording\": recording_chunk, \"time\": t_stop - t_start}\n recordings_chunked[(margin_ms, chunk_duration)] = result_dict" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let's visualize the error for the \"10s\" chunks and different margins, centered around 30s (which is a chunk edge):\n\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "fig, ax = plt.subplots(figsize=(10, 5))\ntrace_plotted = False\nstart_time = 15 # seconds\nend_time = 45 # seconds\nstart_frame = int(start_time * recording_optimal.sampling_frequency)\nend_frame = int(end_time * recording_optimal.sampling_frequency)\ntimestamps = recording_optimal.get_times()[start_frame:end_frame]\nfor recording_key, recording_dict in recordings_chunked.items():\n recording_chunk = recording_dict[\"recording\"]\n margin, chunk = recording_key\n # only plot \"10s\" chunks\n if chunk != \"10s\":\n continue\n traces_opt = recording_optimal.get_traces(\n start_frame=start_frame, end_frame=end_frame\n )\n if not trace_plotted:\n ax.plot(timestamps, traces_opt, color=\"grey\", label=\"traces\", alpha=0.5)\n trace_plotted = True\n diff = recording_optimal - recording_chunk\n traces_diff = diff.get_traces(start_frame=start_frame, end_frame=end_frame)\n ax.plot(timestamps, traces_diff, label=f\"Margin: {margin}\")\n for chunk in [20, 30, 40]: # chunk boundaries at 10s intervals\n ax.axvline(x=chunk, color=\"red\", linestyle=\"--\", alpha=0.5)\n\nax.set_xlabel(\"Time (s)\")\nax.set_ylabel(\"Voltage ($\\\\mu V$)\")\n_ = ax.legend()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "From the plot, we can see that there is a very small error when the margin size is large (green),\na larger error when the margin is smaller (orange) and a large error when the margin is small (blue).\nSo we need large margins (compared to the chunk size) if we want accurate filtered.\n\nThe artifacts do not depend on chunk size, but for smaller chunk sizes, these artifacts will happen more often.\nIn addition, the margin \"overhead\" will make processing slower. Let's quantify these concepts by computing the\noverall absolute error with respect to the optimal case and processing time.\n\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "trace_plotted = False\ntraces_optimal = recording_optimal.get_traces()\ndata = {\"margin\": [], \"chunk\": [], \"error\": [], \"time\": []}\nfor recording_key, recording_dict in recordings_chunked.items():\n recording_chunk = recording_dict[\"recording\"]\n time = recording_dict[\"time\"]\n margin, chunk = recording_key\n traces_chunk = recording_chunk.get_traces()\n error = np.sum(np.abs(traces_optimal - traces_chunk))\n data[\"margin\"].append(margin)\n data[\"chunk\"].append(chunk)\n data[\"error\"].append(error)\n data[\"time\"].append(time)\n\ndf = pd.DataFrame(data=data)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now let's visualize the error and processing time for different margin and chunk size combinations\n\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "fig, axs = plt.subplots(ncols=2, figsize=(10, 5))\nsns.barplot(data=data, x=\"margin\", y=\"error\", hue=\"chunk\", ax=axs[0])\naxs[0].set_yscale(\"log\")\nsns.barplot(data=data, x=\"margin\", y=\"time\", hue=\"chunk\", ax=axs[1])\naxs[0].set_title(\"Error VS margin x chunk size\")\naxs[1].set_title(\"Processing time VS margin x chunk size\")\n\nsns.despine(fig)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Summary\n\n1. **Low-frequency filters require special care**: Filters with low cutoff frequencies (< 10 Hz) have long\n impulse responses that require large margins to avoid edge artifacts.\n\n2. **Chunking artifacts are real**: When processing data in chunks, insufficient margins lead to visible\n discontinuities and errors at chunk boundaries.\n\n3. **The solution: large chunks and large margins**: For LFP extraction (1-300 Hz), use:\n - Chunk size: 30-60 seconds\n - Margin size: 5 seconds (for 1 Hz highpass) (**use defaults!**)\n - This is less memory-efficient but more accurate\n\n4. **Downsample after filtering**: After bandpass filtering, downsample to reduce data size (e.g., to 1-2.5 kHz\n for 300 Hz max frequency).\n\n5. **Trade-offs**: There's always a trade-off between computational efficiency (smaller chunks, less memory)\n and accuracy (larger chunks, fewer artifacts). For LFP analysis, accuracy should take priority.\n\n**When processing your own data:**\n\n- If you have memory constraints, use the largest chunk size your system can handle\n- Always verify your filtering parameters on a small test segment first\n- Consider the lowest frequency component you want to preserve when setting margins\n- Save the processed LFP data to disk to avoid recomputing\n\n" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.13.2" - } - }, - "nbformat": 4, - "nbformat_minor": 0 -} diff --git a/doc/forhowto/plot_extract_lfps.py b/doc/forhowto/plot_extract_lfps.py deleted file mode 100644 index 4eb4393c22..0000000000 --- a/doc/forhowto/plot_extract_lfps.py +++ /dev/null @@ -1,313 +0,0 @@ -""" -Extract LFPs -============ - -Understanding filtering artifacts and chunking when extracting LFPs - -Local Field Potentials (LFPs) are low-frequency signals (<300 Hz) that reflect the summed activity of many neurons. -Extracting LFPs from high-sampling-rate recordings requires bandpass filtering, but this can introduce artifacts -when not done carefully, especially when data is processed in chunks (for memory efficiency). - -This tutorial demonstrates: - -1. How to generate simulated LFP data -2. Common pitfalls when filtering with low cutoff frequencies -3. How chunking and margins affect filtering artifacts -4. Summary - -**Key takeaway**: For LFP extraction, use large chunks (30-60s) and large margins (several seconds) to minimize -edge artifacts, even though this is less memory-efficient. -""" - -############################################################################## -# Import necessary modules - -import time -import numpy as np -import matplotlib.pyplot as plt -from pathlib import Path -import pandas as pd -import seaborn as sns - -import spikeinterface as si -import spikeinterface.extractors as se -import spikeinterface.preprocessing as spre -import spikeinterface.widgets as sw -from spikeinterface.core import generate_ground_truth_recording - -############################################################################## -# 1. Generate simulated recording with low-frequency signals -# ----------------------------------------------------------- -# -# Let's create a simulated recording and add some low-frequency sinusoids that mimic LFP activity. - -# Generate a ground truth recording with spikes -# Use a higher sampling rate (30 kHz) to simulate raw neural data -recording, sorting = generate_ground_truth_recording( - durations=[300.0], # 300 s - sampling_frequency=30000.0, - num_channels=1, - num_units=4, - seed=2305, -) - -print(recording) - -############################################################################## -# Now let's add some low-frequency sinusoidal components to simulate LFP signals - -# Add low-frequency sinusoids with different frequencies and phases per channel -rng = np.random.default_rng(42) -num_channels = recording.get_num_channels() -lfp_signals = np.zeros( - (recording.get_num_samples(), recording.get_num_channels()) -) -time_vector = recording.get_times() - -for ch in range(num_channels): - # Add multiple frequency components (theta, alpha, beta ranges) - # Theta-like: 4-8 Hz - freq_theta = 4 + rng.random() * 4 - phase_theta = rng.random() * 2 * np.pi - amp_theta = 50 + rng.random() * 50 - - # Alpha-like: 8-12 Hz - freq_alpha = 8 + rng.random() * 4 - phase_alpha = rng.random() * 2 * np.pi - amp_alpha = 30 + rng.random() * 30 - - # Beta-like: 12-30 Hz - freq_beta = 12 + rng.random() * 18 - phase_beta = rng.random() * 2 * np.pi - amp_beta = 20 + rng.random() * 20 - - lfp_signals[:, ch] = ( - amp_theta * np.sin(2 * np.pi * freq_theta * time_vector + phase_theta) - + amp_alpha * np.sin(2 * np.pi * freq_alpha * time_vector + phase_alpha) - + amp_beta * np.sin(2 * np.pi * freq_beta * time_vector + phase_beta) - ) - -# Create a recording with the added LFP signals -recording_lfp = si.NumpyRecording( - traces_list=[lfp_signals], - sampling_frequency=recording.sampling_frequency, - channel_ids=recording.channel_ids, -) -recording_with_lfp = recording + recording_lfp - - -############################################################################## -# Let's visualize a short segment of the signal - -_ = sw.plot_traces(recording_with_lfp, time_range=[0, 3]) - -############################################################################## -# 2. Filtering with low cutoff frequencies: the problem -# ------------------------------------------------------ -# -# Now let's try to extract LFPs using a bandpass filter with a low highpass cutoff (1 Hz). -# This will demonstrate a common issue. - -# Try to filter with 1 Hz highpass -try: - recording_lfp_1hz = spre.bandpass_filter( - recording_with_lfp, freq_min=1.0, freq_max=300.0 - ) -except Exception as e: - print(f"Error message:\n{str(e)}") - -############################################################################## -# **Why does this fail?** -# -# The error occurs because by default in SpikeInterface when highpass filtering below 100 Hz. -# Filters with very low cutoff frequencies have long impulse responses, which require larger margins to avoid edge artifacts between chunks. -# -# The filter length (and required margin) scales inversely with the highpass frequency. A 1 Hz highpass -# filter requires a margin of several seconds, while a 300 Hz highpass (for spike extraction) only needs -# a few milliseconds. - -############################################################################## -# 3. Understanding chunking and margins -# -------------------------------------- -# -# SpikeInterface processes recordings in chunks to handle large datasets efficiently. Each chunk needs -# a "margin" (extra samples at the edges) to avoid edge artifacts when filtering. Let's demonstrate -# this by saving the filtered data with different chunking strategies. -# -# **This error is to inform the user that extra care should be used when dealing with LFP signals!** -# -# We can ignore this error, but let's make sure we understand what it's happening. - -# We can ignore this error, but let's see what is happening -recording_filt = spre.bandpass_filter( - recording_with_lfp, freq_min=1.0, freq_max=300.0, ignore_low_freq_error=True -) - -############################################################################## -# When retrieving traces, extra samples will be retrieved at the left and right edges. -# By default, the filter function will set a margin to 5x the sampling period associated to `freq_min`. -# So for a 1 Hz cutoff frequency, the margin will be 5 seconds! - -margin_in_s = recording_filt.margin_samples / recording_lfp.sampling_frequency -print(f"Margin: {margin_in_s} s") - -############################################################################## -# This effectively means that if we plot 1-s snippet of traces, a total of 11 s will actually be read and filtered. -# Note that the margin can be overridden with the `margin_ms` argument, but we do not recommend changing it. - -_ = sw.plot_traces(recording_filt, time_range=[20, 21]) - -############################################################################## -# A warning tells us that what we are doing is not optimized, since in order to get the requested traces -# the margin "overhead" is very large. -# -# If we ask or plot longer snippets, the warning is not displayed. - -_ = sw.plot_traces(recording_filt, time_range=[20, 80]) - -############################################################################## -# 4. Quantification and visualization of the artifacts -# ----------------------------------------------------- -# -# Let's extract the traces and visualize the differences between chunking strategies. -# We'll focus on the chunk boundaries where artifacts appear. - -margins_ms = [100, 1000, 5000] -chunk_durations = ["1s", "10s", "30s"] - -############################################################################## -# The best we can do is to save the full recording in one chunk. This will cause no artifacts and chunking effects, -# but in practice it's not possible due to the duration and number of channels of most setups. -# -# Since in this toy case we have a single channel 5-min recording, we can use this as "optimal". - -recording_optimal = recording_filt.save( - format="memory", - chunk_duration="1000s", - progress_bar=False -) - -print(recording_optimal) - -############################################################################## -# Now we can do the same with our various options: - -recordings_chunked = {} - -for margin_ms in margins_ms: - for chunk_duration in chunk_durations: - print(f"Margin ms: {margin_ms} - Chunk duration: {chunk_duration}") - t_start = time.perf_counter() - recording_chunk = spre.bandpass_filter( - recording_with_lfp, - freq_min=1.0, - freq_max=300.0, - margin_ms=margin_ms, - ignore_low_freq_error=True, - ) - recording_chunk = recording_chunk.save( - format="memory", - chunk_duration=chunk_duration, - verbose=False, - progress_bar=False - ) - t_stop = time.perf_counter() - result_dict = {"recording": recording_chunk, "time": t_stop - t_start} - recordings_chunked[(margin_ms, chunk_duration)] = result_dict - -############################################################################## -# Let's visualize the error for the "10s" chunks and different margins, centered around 30s (which is a chunk edge): - -fig, ax = plt.subplots(figsize=(10, 5)) -trace_plotted = False -start_time = 15 # seconds -end_time = 45 # seconds -start_frame = int(start_time * recording_optimal.sampling_frequency) -end_frame = int(end_time * recording_optimal.sampling_frequency) -timestamps = recording_optimal.get_times()[start_frame:end_frame] -for recording_key, recording_dict in recordings_chunked.items(): - recording_chunk = recording_dict["recording"] - margin, chunk = recording_key - # only plot "10s" chunks - if chunk != "10s": - continue - traces_opt = recording_optimal.get_traces( - start_frame=start_frame, end_frame=end_frame - ) - if not trace_plotted: - ax.plot(timestamps, traces_opt, color="grey", label="traces", alpha=0.5) - trace_plotted = True - diff = recording_optimal - recording_chunk - traces_diff = diff.get_traces(start_frame=start_frame, end_frame=end_frame) - ax.plot(timestamps, traces_diff, label=f"Margin: {margin}") - for chunk in [20, 30, 40]: # chunk boundaries at 10s intervals - ax.axvline(x=chunk, color="red", linestyle="--", alpha=0.5) - -ax.set_xlabel("Time (s)") -ax.set_ylabel("Voltage ($\\mu V$)") -_ = ax.legend() - -############################################################################## -# From the plot, we can see that there is a very small error when the margin size is large (green), -# a larger error when the margin is smaller (orange) and a large error when the margin is small (blue). -# So we need large margins (compared to the chunk size) if we want accurate filtered. -# -# The artifacts do not depend on chunk size, but for smaller chunk sizes, these artifacts will happen more often. -# In addition, the margin "overhead" will make processing slower. Let's quantify these concepts by computing the -# overall absolute error with respect to the optimal case and processing time. - -trace_plotted = False -traces_optimal = recording_optimal.get_traces() -data = {"margin": [], "chunk": [], "error": [], "time": []} -for recording_key, recording_dict in recordings_chunked.items(): - recording_chunk = recording_dict["recording"] - time = recording_dict["time"] - margin, chunk = recording_key - traces_chunk = recording_chunk.get_traces() - error = np.sum(np.abs(traces_optimal - traces_chunk)) - data["margin"].append(margin) - data["chunk"].append(chunk) - data["error"].append(error) - data["time"].append(time) - -df = pd.DataFrame(data=data) - -############################################################################## -# Now let's visualize the error and processing time for different margin and chunk size combinations - -fig, axs = plt.subplots(ncols=2, figsize=(10, 5)) -sns.barplot(data=data, x="margin", y="error", hue="chunk", ax=axs[0]) -axs[0].set_yscale("log") -sns.barplot(data=data, x="margin", y="time", hue="chunk", ax=axs[1]) -axs[0].set_title("Error VS margin x chunk size") -axs[1].set_title("Processing time VS margin x chunk size") - -sns.despine(fig) - -############################################################################## -# Summary -# ------- -# -# 1. **Low-frequency filters require special care**: Filters with low cutoff frequencies (< 10 Hz) have long -# impulse responses that require large margins to avoid edge artifacts. -# -# 2. **Chunking artifacts are real**: When processing data in chunks, insufficient margins lead to visible -# discontinuities and errors at chunk boundaries. -# -# 3. **The solution: large chunks and large margins**: For LFP extraction (1-300 Hz), use: -# - Chunk size: 30-60 seconds -# - Margin size: 5 seconds (for 1 Hz highpass) (**use defaults!**) -# - This is less memory-efficient but more accurate -# -# 4. **Downsample after filtering**: After bandpass filtering, downsample to reduce data size (e.g., to 1-2.5 kHz -# for 300 Hz max frequency). -# -# 5. **Trade-offs**: There's always a trade-off between computational efficiency (smaller chunks, less memory) -# and accuracy (larger chunks, fewer artifacts). For LFP analysis, accuracy should take priority. -# -# **When processing your own data:** -# -# - If you have memory constraints, use the largest chunk size your system can handle -# - Always verify your filtering parameters on a small test segment first -# - Consider the lowest frequency component you want to preserve when setting margins -# - Save the processed LFP data to disk to avoid recomputing diff --git a/doc/forhowto/plot_extract_lfps.py.md5 b/doc/forhowto/plot_extract_lfps.py.md5 deleted file mode 100644 index 850f803ce2..0000000000 --- a/doc/forhowto/plot_extract_lfps.py.md5 +++ /dev/null @@ -1 +0,0 @@ -fb59f45750a1df962d590b4f861b08eb diff --git a/doc/forhowto/plot_extract_lfps.rst b/doc/forhowto/plot_extract_lfps.rst deleted file mode 100644 index 419714de2d..0000000000 --- a/doc/forhowto/plot_extract_lfps.rst +++ /dev/null @@ -1,640 +0,0 @@ - -.. DO NOT EDIT. -.. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. -.. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: -.. "forhowto/plot_extract_lfps.py" -.. LINE NUMBERS ARE GIVEN BELOW. - -.. only:: html - - .. note:: - :class: sphx-glr-download-link-note - - :ref:`Go to the end ` - to download the full example code. - -.. rst-class:: sphx-glr-example-title - -.. _sphx_glr_forhowto_plot_extract_lfps.py: - - -Extract LFPs -============ - -Understanding filtering artifacts and chunking when extracting LFPs - -Local Field Potentials (LFPs) are low-frequency signals (<300 Hz) that reflect the summed activity of many neurons. -Extracting LFPs from high-sampling-rate recordings requires bandpass filtering, but this can introduce artifacts -when not done carefully, especially when data is processed in chunks (for memory efficiency). - -This tutorial demonstrates: - -1. How to generate simulated LFP data -2. Common pitfalls when filtering with low cutoff frequencies -3. How chunking and margins affect filtering artifacts -4. Summary - -**Key takeaway**: For LFP extraction, use large chunks (30-60s) and large margins (several seconds) to minimize -edge artifacts, even though this is less memory-efficient. - -.. GENERATED FROM PYTHON SOURCE LINES 23-24 - -Import necessary modules - -.. GENERATED FROM PYTHON SOURCE LINES 24-38 - -.. code-block:: Python - - - import time - import numpy as np - import matplotlib.pyplot as plt - from pathlib import Path - import pandas as pd - import seaborn as sns - - import spikeinterface as si - import spikeinterface.extractors as se - import spikeinterface.preprocessing as spre - import spikeinterface.widgets as sw - from spikeinterface.core import generate_ground_truth_recording - - - - - - - - -.. GENERATED FROM PYTHON SOURCE LINES 39-43 - -1. Generate simulated recording with low-frequency signals ------------------------------------------------------------ - -Let's create a simulated recording and add some low-frequency sinusoids that mimic LFP activity. - -.. GENERATED FROM PYTHON SOURCE LINES 43-56 - -.. code-block:: Python - - - # Generate a ground truth recording with spikes - # Use a higher sampling rate (30 kHz) to simulate raw neural data - recording, sorting = generate_ground_truth_recording( - durations=[300.0], # 300 s - sampling_frequency=30000.0, - num_channels=1, - num_units=4, - seed=2305, - ) - - print(recording) - - - - - -.. rst-class:: sphx-glr-script-out - - .. code-block:: none - - GroundTruthRecording (InjectTemplatesRecording): 1 channels - 30.0kHz - 1 segments - 9,000,000 samples - 300.00s (5.00 minutes) - float32 dtype - 34.33 MiB - - - - -.. GENERATED FROM PYTHON SOURCE LINES 57-58 - -Now let's add some low-frequency sinusoidal components to simulate LFP signals - -.. GENERATED FROM PYTHON SOURCE LINES 58-99 - -.. code-block:: Python - - - # Add low-frequency sinusoids with different frequencies and phases per channel - rng = np.random.default_rng(42) - num_channels = recording.get_num_channels() - lfp_signals = np.zeros( - (recording.get_num_samples(), recording.get_num_channels()) - ) - time_vector = recording.get_times() - - for ch in range(num_channels): - # Add multiple frequency components (theta, alpha, beta ranges) - # Theta-like: 4-8 Hz - freq_theta = 4 + rng.random() * 4 - phase_theta = rng.random() * 2 * np.pi - amp_theta = 50 + rng.random() * 50 - - # Alpha-like: 8-12 Hz - freq_alpha = 8 + rng.random() * 4 - phase_alpha = rng.random() * 2 * np.pi - amp_alpha = 30 + rng.random() * 30 - - # Beta-like: 12-30 Hz - freq_beta = 12 + rng.random() * 18 - phase_beta = rng.random() * 2 * np.pi - amp_beta = 20 + rng.random() * 20 - - lfp_signals[:, ch] = ( - amp_theta * np.sin(2 * np.pi * freq_theta * time_vector + phase_theta) - + amp_alpha * np.sin(2 * np.pi * freq_alpha * time_vector + phase_alpha) - + amp_beta * np.sin(2 * np.pi * freq_beta * time_vector + phase_beta) - ) - - # Create a recording with the added LFP signals - recording_lfp = si.NumpyRecording( - traces_list=[lfp_signals], - sampling_frequency=recording.sampling_frequency, - channel_ids=recording.channel_ids, - ) - recording_with_lfp = recording + recording_lfp - - - - - - - - - -.. GENERATED FROM PYTHON SOURCE LINES 100-101 - -Let's visualize a short segment of the signal - -.. GENERATED FROM PYTHON SOURCE LINES 101-104 - -.. code-block:: Python - - - _ = sw.plot_traces(recording_with_lfp, time_range=[0, 3]) - - - - -.. image-sg:: /forhowto/images/sphx_glr_plot_extract_lfps_001.png - :alt: plot extract lfps - :srcset: /forhowto/images/sphx_glr_plot_extract_lfps_001.png - :class: sphx-glr-single-img - - - - - -.. GENERATED FROM PYTHON SOURCE LINES 105-110 - -2. Filtering with low cutoff frequencies: the problem ------------------------------------------------------- - -Now let's try to extract LFPs using a bandpass filter with a low highpass cutoff (1 Hz). -This will demonstrate a common issue. - -.. GENERATED FROM PYTHON SOURCE LINES 110-119 - -.. code-block:: Python - - - # Try to filter with 1 Hz highpass - try: - recording_lfp_1hz = spre.bandpass_filter( - recording_with_lfp, freq_min=1.0, freq_max=300.0 - ) - except Exception as e: - print(f"Error message:\n{str(e)}") - - - - - -.. rst-class:: sphx-glr-script-out - - .. code-block:: none - - Error message: - The freq_min (1.0 Hz) is too low and may cause artifacts during chunk processing. You can set 'ignore_low_freq_error=True' to bypass this error, but make sure you understand the implications. It is recommended to use large chunks when processing/saving your filtered recording to minimize IO overhead.Refer to this documentation on LFP filtering and chunking artifacts for more details: https://spikeinterface.readthedocs.io/en/latest/how-to/extract_lfps.html. - - - - -.. GENERATED FROM PYTHON SOURCE LINES 120-128 - -**Why does this fail?** - -The error occurs because by default in SpikeInterface when highpass filtering below 100 Hz. -Filters with very low cutoff frequencies have long impulse responses, which require larger margins to avoid edge artifacts between chunks. - -The filter length (and required margin) scales inversely with the highpass frequency. A 1 Hz highpass -filter requires a margin of several seconds, while a 300 Hz highpass (for spike extraction) only needs -a few milliseconds. - -.. GENERATED FROM PYTHON SOURCE LINES 130-140 - -3. Understanding chunking and margins --------------------------------------- - -SpikeInterface processes recordings in chunks to handle large datasets efficiently. Each chunk needs -a "margin" (extra samples at the edges) to avoid edge artifacts when filtering. Let's demonstrate -this by saving the filtered data with different chunking strategies. - -**This error is to inform the user that extra care should be used when dealing with LFP signals!** - -We can ignore this error, but let's make sure we understand what it's happening. - -.. GENERATED FROM PYTHON SOURCE LINES 140-146 - -.. code-block:: Python - - - # We can ignore this error, but let's see what is happening - recording_filt = spre.bandpass_filter( - recording_with_lfp, freq_min=1.0, freq_max=300.0, ignore_low_freq_error=True - ) - - - - - - - - -.. GENERATED FROM PYTHON SOURCE LINES 147-150 - -When retrieving traces, extra samples will be retrieved at the left and right edges. -By default, the filter function will set a margin to 5x the sampling period associated to `freq_min`. -So for a 1 Hz cutoff frequency, the margin will be 5 seconds! - -.. GENERATED FROM PYTHON SOURCE LINES 150-154 - -.. code-block:: Python - - - margin_in_s = recording_filt.margin_samples / recording_lfp.sampling_frequency - print(f"Margin: {margin_in_s} s") - - - - - -.. rst-class:: sphx-glr-script-out - - .. code-block:: none - - Margin: 5.0 s - - - - -.. GENERATED FROM PYTHON SOURCE LINES 155-157 - -This effectively means that if we plot 1-s snippet of traces, a total of 11 s will actually be read and filtered. -Note that the margin can be overridden with the `margin_ms` argument, but we do not recommend changing it. - -.. GENERATED FROM PYTHON SOURCE LINES 157-160 - -.. code-block:: Python - - - _ = sw.plot_traces(recording_filt, time_range=[20, 21]) - - - - -.. image-sg:: /forhowto/images/sphx_glr_plot_extract_lfps_002.png - :alt: plot extract lfps - :srcset: /forhowto/images/sphx_glr_plot_extract_lfps_002.png - :class: sphx-glr-single-img - - -.. rst-class:: sphx-glr-script-out - - .. code-block:: none - - /home/alessio/Documents/Codes/spike_sorting/spikeinterface/spikeinterface/src/spikeinterface/preprocessing/filter.py:169: UserWarning: The margin size (150000 samples) is more than 20% of the chunk size 30000 samples. This may lead to performance bottlenecks when chunking. Consider increasing the chunk size to minimize margin overhead. - warnings.warn( - - - - -.. GENERATED FROM PYTHON SOURCE LINES 161-165 - -A warning tells us that what we are doing is not optimized, since in order to get the requested traces -the margin "overhead" is very large. - -If we ask or plot longer snippets, the warning is not displayed. - -.. GENERATED FROM PYTHON SOURCE LINES 165-168 - -.. code-block:: Python - - - _ = sw.plot_traces(recording_filt, time_range=[20, 80]) - - - - -.. image-sg:: /forhowto/images/sphx_glr_plot_extract_lfps_003.png - :alt: plot extract lfps - :srcset: /forhowto/images/sphx_glr_plot_extract_lfps_003.png - :class: sphx-glr-single-img - - - - - -.. GENERATED FROM PYTHON SOURCE LINES 169-174 - -4. Quantification and visualization of the artifacts ------------------------------------------------------ - -Let's extract the traces and visualize the differences between chunking strategies. -We'll focus on the chunk boundaries where artifacts appear. - -.. GENERATED FROM PYTHON SOURCE LINES 174-178 - -.. code-block:: Python - - - margins_ms = [100, 1000, 5000] - chunk_durations = ["1s", "10s", "30s"] - - - - - - - - -.. GENERATED FROM PYTHON SOURCE LINES 179-183 - -The best we can do is to save the full recording in one chunk. This will cause no artifacts and chunking effects, -but in practice it's not possible due to the duration and number of channels of most setups. - -Since in this toy case we have a single channel 5-min recording, we can use this as "optimal". - -.. GENERATED FROM PYTHON SOURCE LINES 183-192 - -.. code-block:: Python - - - recording_optimal = recording_filt.save( - format="memory", - chunk_duration="1000s", - progress_bar=False - ) - - print(recording_optimal) - - - - - -.. rst-class:: sphx-glr-script-out - - .. code-block:: none - - SharedMemoryRecording: 1 channels - 30.0kHz - 1 segments - 9,000,000 samples - 300.00s (5.00 minutes) - float32 dtype - 34.33 MiB - - - - -.. GENERATED FROM PYTHON SOURCE LINES 193-194 - -Now we can do the same with our various options: - -.. GENERATED FROM PYTHON SOURCE LINES 194-218 - -.. code-block:: Python - - - recordings_chunked = {} - - for margin_ms in margins_ms: - for chunk_duration in chunk_durations: - print(f"Margin ms: {margin_ms} - Chunk duration: {chunk_duration}") - t_start = time.perf_counter() - recording_chunk = spre.bandpass_filter( - recording_with_lfp, - freq_min=1.0, - freq_max=300.0, - margin_ms=margin_ms, - ignore_low_freq_error=True, - ) - recording_chunk = recording_chunk.save( - format="memory", - chunk_duration=chunk_duration, - verbose=False, - progress_bar=False - ) - t_stop = time.perf_counter() - result_dict = {"recording": recording_chunk, "time": t_stop - t_start} - recordings_chunked[(margin_ms, chunk_duration)] = result_dict - - - - - -.. rst-class:: sphx-glr-script-out - - .. code-block:: none - - Margin ms: 100 - Chunk duration: 1s - /home/alessio/Documents/Codes/spike_sorting/spikeinterface/spikeinterface/src/spikeinterface/preprocessing/filter.py:458: UserWarning: The provided margin_ms (100 ms) is smaller than the recommended margin for the given freq_min (1.0 Hz). This may lead to artifacts at the edges of chunks during processing. Consider increasing the margin_ms to at least 5000.0 ms. - warnings.warn( - Margin ms: 100 - Chunk duration: 10s - Margin ms: 100 - Chunk duration: 30s - Margin ms: 1000 - Chunk duration: 1s - /home/alessio/Documents/Codes/spike_sorting/spikeinterface/spikeinterface/src/spikeinterface/preprocessing/filter.py:458: UserWarning: The provided margin_ms (1000 ms) is smaller than the recommended margin for the given freq_min (1.0 Hz). This may lead to artifacts at the edges of chunks during processing. Consider increasing the margin_ms to at least 5000.0 ms. - warnings.warn( - /home/alessio/Documents/Codes/spike_sorting/spikeinterface/spikeinterface/src/spikeinterface/preprocessing/filter.py:169: UserWarning: The margin size (30000 samples) is more than 20% of the chunk size 30000 samples. This may lead to performance bottlenecks when chunking. Consider increasing the chunk size to minimize margin overhead. - warnings.warn( - Margin ms: 1000 - Chunk duration: 10s - Margin ms: 1000 - Chunk duration: 30s - Margin ms: 5000 - Chunk duration: 1s - Margin ms: 5000 - Chunk duration: 10s - /home/alessio/Documents/Codes/spike_sorting/spikeinterface/spikeinterface/src/spikeinterface/preprocessing/filter.py:169: UserWarning: The margin size (150000 samples) is more than 20% of the chunk size 300000 samples. This may lead to performance bottlenecks when chunking. Consider increasing the chunk size to minimize margin overhead. - warnings.warn( - Margin ms: 5000 - Chunk duration: 30s - - - - -.. GENERATED FROM PYTHON SOURCE LINES 219-220 - -Let's visualize the error for the "10s" chunks and different margins, centered around 30s (which is a chunk edge): - -.. GENERATED FROM PYTHON SOURCE LINES 220-250 - -.. code-block:: Python - - - fig, ax = plt.subplots(figsize=(10, 5)) - trace_plotted = False - start_time = 15 # seconds - end_time = 45 # seconds - start_frame = int(start_time * recording_optimal.sampling_frequency) - end_frame = int(end_time * recording_optimal.sampling_frequency) - timestamps = recording_optimal.get_times()[start_frame:end_frame] - for recording_key, recording_dict in recordings_chunked.items(): - recording_chunk = recording_dict["recording"] - margin, chunk = recording_key - # only plot "10s" chunks - if chunk != "10s": - continue - traces_opt = recording_optimal.get_traces( - start_frame=start_frame, end_frame=end_frame - ) - if not trace_plotted: - ax.plot(timestamps, traces_opt, color="grey", label="traces", alpha=0.5) - trace_plotted = True - diff = recording_optimal - recording_chunk - traces_diff = diff.get_traces(start_frame=start_frame, end_frame=end_frame) - ax.plot(timestamps, traces_diff, label=f"Margin: {margin}") - for chunk in [20, 30, 40]: # chunk boundaries at 10s intervals - ax.axvline(x=chunk, color="red", linestyle="--", alpha=0.5) - - ax.set_xlabel("Time (s)") - ax.set_ylabel("Voltage ($\\mu V$)") - _ = ax.legend() - - - - -.. image-sg:: /forhowto/images/sphx_glr_plot_extract_lfps_004.png - :alt: plot extract lfps - :srcset: /forhowto/images/sphx_glr_plot_extract_lfps_004.png - :class: sphx-glr-single-img - - - - - -.. GENERATED FROM PYTHON SOURCE LINES 251-258 - -From the plot, we can see that there is a very small error when the margin size is large (green), -a larger error when the margin is smaller (orange) and a large error when the margin is small (blue). -So we need large margins (compared to the chunk size) if we want accurate filtered. - -The artifacts do not depend on chunk size, but for smaller chunk sizes, these artifacts will happen more often. -In addition, the margin "overhead" will make processing slower. Let's quantify these concepts by computing the -overall absolute error with respect to the optimal case and processing time. - -.. GENERATED FROM PYTHON SOURCE LINES 258-275 - -.. code-block:: Python - - - trace_plotted = False - traces_optimal = recording_optimal.get_traces() - data = {"margin": [], "chunk": [], "error": [], "time": []} - for recording_key, recording_dict in recordings_chunked.items(): - recording_chunk = recording_dict["recording"] - time = recording_dict["time"] - margin, chunk = recording_key - traces_chunk = recording_chunk.get_traces() - error = np.sum(np.abs(traces_optimal - traces_chunk)) - data["margin"].append(margin) - data["chunk"].append(chunk) - data["error"].append(error) - data["time"].append(time) - - df = pd.DataFrame(data=data) - - - - - - - - -.. GENERATED FROM PYTHON SOURCE LINES 276-277 - -Now let's visualize the error and processing time for different margin and chunk size combinations - -.. GENERATED FROM PYTHON SOURCE LINES 277-287 - -.. code-block:: Python - - - fig, axs = plt.subplots(ncols=2, figsize=(10, 5)) - sns.barplot(data=data, x="margin", y="error", hue="chunk", ax=axs[0]) - axs[0].set_yscale("log") - sns.barplot(data=data, x="margin", y="time", hue="chunk", ax=axs[1]) - axs[0].set_title("Error VS margin x chunk size") - axs[1].set_title("Processing time VS margin x chunk size") - - sns.despine(fig) - - - - -.. image-sg:: /forhowto/images/sphx_glr_plot_extract_lfps_005.png - :alt: Error VS margin x chunk size, Processing time VS margin x chunk size - :srcset: /forhowto/images/sphx_glr_plot_extract_lfps_005.png - :class: sphx-glr-single-img - - - - - -.. GENERATED FROM PYTHON SOURCE LINES 288-314 - -Summary -------- - -1. **Low-frequency filters require special care**: Filters with low cutoff frequencies (< 10 Hz) have long - impulse responses that require large margins to avoid edge artifacts. - -2. **Chunking artifacts are real**: When processing data in chunks, insufficient margins lead to visible - discontinuities and errors at chunk boundaries. - -3. **The solution: large chunks and large margins**: For LFP extraction (1-300 Hz), use: - - Chunk size: 30-60 seconds - - Margin size: 5 seconds (for 1 Hz highpass) (**use defaults!**) - - This is less memory-efficient but more accurate - -4. **Downsample after filtering**: After bandpass filtering, downsample to reduce data size (e.g., to 1-2.5 kHz - for 300 Hz max frequency). - -5. **Trade-offs**: There's always a trade-off between computational efficiency (smaller chunks, less memory) - and accuracy (larger chunks, fewer artifacts). For LFP analysis, accuracy should take priority. - -**When processing your own data:** - -- If you have memory constraints, use the largest chunk size your system can handle -- Always verify your filtering parameters on a small test segment first -- Consider the lowest frequency component you want to preserve when setting margins -- Save the processed LFP data to disk to avoid recomputing - - -.. rst-class:: sphx-glr-timing - - **Total running time of the script:** (0 minutes 10.342 seconds) - - -.. _sphx_glr_download_forhowto_plot_extract_lfps.py: - -.. only:: html - - .. container:: sphx-glr-footer sphx-glr-footer-example - - .. container:: sphx-glr-download sphx-glr-download-jupyter - - :download:`Download Jupyter notebook: plot_extract_lfps.ipynb ` - - .. container:: sphx-glr-download sphx-glr-download-python - - :download:`Download Python source code: plot_extract_lfps.py ` - - .. container:: sphx-glr-download sphx-glr-download-zip - - :download:`Download zipped: plot_extract_lfps.zip ` - - -.. only:: html - - .. rst-class:: sphx-glr-signature - - `Gallery generated by Sphinx-Gallery `_ diff --git a/doc/forhowto/plot_extract_lfps.zip b/doc/forhowto/plot_extract_lfps.zip deleted file mode 100644 index 091d42cb5cd772b49a3a3fb9b31a617b46e30000..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30149 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 J|8^Gq^#6UgKNtW2 diff --git a/doc/forhowto/plot_working_with_tetrodes.codeobj.json b/doc/forhowto/plot_working_with_tetrodes.codeobj.json deleted file mode 100644 index 37675b005a..0000000000 --- a/doc/forhowto/plot_working_with_tetrodes.codeobj.json +++ /dev/null @@ -1,743 +0,0 @@ -{ - "ProbeGroup": [ - { - "is_class": true, - "is_explicit": false, - "module": "probeinterface.probegroup", - "module_short": "probeinterface", - "name": "ProbeGroup" - }, - { - "is_class": true, - "is_explicit": false, - "module": "probeinterface", - "module_short": "probeinterface", - "name": "ProbeGroup" - }, - { - "is_class": false, - "is_explicit": false, - "module": "probeinterface", - "module_short": "probeinterface", - "name": "ProbeGroup" - } - ], - "_": [ - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core.numpyextractors", - "module_short": "spikeinterface", - "name": "NumpySorting" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core", - "module_short": "spikeinterface", - "name": "NumpySorting" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "NumpySorting" - } - ], - "generate_ground_truth_recording": [ - { - "is_class": false, - "is_explicit": false, - "module": "builtins", - "module_short": "builtins", - "name": "function" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "generate_ground_truth_recording" - } - ], - "generate_tetrode": [ - { - "is_class": false, - "is_explicit": false, - "module": "builtins", - "module_short": "builtins", - "name": "function" - }, - { - "is_class": false, - "is_explicit": false, - "module": "probeinterface", - "module_short": "probeinterface", - "name": "generate_tetrode" - } - ], - "grouped_recordings": [ - { - "is_class": false, - "is_explicit": false, - "module": "builtins", - "module_short": "builtins", - "name": "dict" - } - ], - "plot_probe_map": [ - { - "is_class": true, - "is_explicit": false, - "module": "spikeinterface.widgets.probe_map", - "module_short": "spikeinterface.widgets", - "name": "ProbeMapWidget" - }, - { - "is_class": true, - "is_explicit": false, - "module": "spikeinterface.widgets", - "module_short": "spikeinterface.widgets", - "name": "ProbeMapWidget" - }, - { - "is_class": true, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "ProbeMapWidget" - }, - { - "is_class": true, - "is_explicit": false, - "module": "spikeinterface.widgets.base", - "module_short": "spikeinterface.widgets.base", - "name": "BaseWidget" - }, - { - "is_class": true, - "is_explicit": false, - "module": "spikeinterface.widgets", - "module_short": "spikeinterface.widgets", - "name": "BaseWidget" - }, - { - "is_class": true, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "BaseWidget" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.widgets", - "module_short": "spikeinterface.widgets", - "name": "plot_probe_map" - } - ], - "plot_traces": [ - { - "is_class": true, - "is_explicit": false, - "module": "spikeinterface.widgets.traces", - "module_short": "spikeinterface.widgets", - "name": "TracesWidget" - }, - { - "is_class": true, - "is_explicit": false, - "module": "spikeinterface.widgets", - "module_short": "spikeinterface.widgets", - "name": "TracesWidget" - }, - { - "is_class": true, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "TracesWidget" - }, - { - "is_class": true, - "is_explicit": false, - "module": "spikeinterface.widgets.base", - "module_short": "spikeinterface.widgets.base", - "name": "BaseWidget" - }, - { - "is_class": true, - "is_explicit": false, - "module": "spikeinterface.widgets", - "module_short": "spikeinterface.widgets", - "name": "BaseWidget" - }, - { - "is_class": true, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "BaseWidget" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.widgets", - "module_short": "spikeinterface.widgets", - "name": "plot_traces" - } - ], - "preprocessed_recording": [ - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.preprocessing.filter", - "module_short": "spikeinterface.preprocessing.filter", - "name": "BandpassFilterRecording" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.preprocessing", - "module_short": "spikeinterface.preprocessing", - "name": "BandpassFilterRecording" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "BandpassFilterRecording" - } - ], - "recording": [ - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core.generate", - "module_short": "spikeinterface", - "name": "InjectTemplatesRecording" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core", - "module_short": "spikeinterface", - "name": "InjectTemplatesRecording" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "InjectTemplatesRecording" - } - ], - "recording.set_probegroup": [ - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core.generate", - "module_short": "spikeinterface", - "name": "InjectTemplatesRecording.set_probegroup" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core", - "module_short": "spikeinterface", - "name": "InjectTemplatesRecording.set_probegroup" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "InjectTemplatesRecording.set_probegroup" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core.baserecording", - "module_short": "spikeinterface", - "name": "BaseRecording.set_probegroup" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core", - "module_short": "spikeinterface", - "name": "BaseRecording.set_probegroup" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "BaseRecording.set_probegroup" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core.baserecordingsnippets", - "module_short": "spikeinterface", - "name": "BaseRecordingSnippets.set_probegroup" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core", - "module_short": "spikeinterface", - "name": "BaseRecordingSnippets.set_probegroup" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "BaseRecordingSnippets.set_probegroup" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core.base", - "module_short": "spikeinterface.core.base", - "name": "BaseExtractor.set_probegroup" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core", - "module_short": "spikeinterface.core", - "name": "BaseExtractor.set_probegroup" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "BaseExtractor.set_probegroup" - } - ], - "recording_good_channels": [ - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.preprocessing.detect_bad_channels", - "module_short": "spikeinterface.preprocessing.detect_bad_channels", - "name": "DetectAndRemoveBadChannelsRecording" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.preprocessing", - "module_short": "spikeinterface.preprocessing", - "name": "DetectAndRemoveBadChannelsRecording" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "DetectAndRemoveBadChannelsRecording" - } - ], - "recording_good_channels.get_property": [ - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.preprocessing.detect_bad_channels", - "module_short": "spikeinterface.preprocessing.detect_bad_channels", - "name": "DetectAndRemoveBadChannelsRecording.get_property" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.preprocessing", - "module_short": "spikeinterface.preprocessing", - "name": "DetectAndRemoveBadChannelsRecording.get_property" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "DetectAndRemoveBadChannelsRecording.get_property" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core.channelslice", - "module_short": "spikeinterface", - "name": "ChannelSliceRecording.get_property" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core", - "module_short": "spikeinterface", - "name": "ChannelSliceRecording.get_property" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "ChannelSliceRecording.get_property" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core.baserecording", - "module_short": "spikeinterface", - "name": "BaseRecording.get_property" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core", - "module_short": "spikeinterface", - "name": "BaseRecording.get_property" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "BaseRecording.get_property" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core.baserecordingsnippets", - "module_short": "spikeinterface", - "name": "BaseRecordingSnippets.get_property" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core", - "module_short": "spikeinterface", - "name": "BaseRecordingSnippets.get_property" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "BaseRecordingSnippets.get_property" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core.base", - "module_short": "spikeinterface.core.base", - "name": "BaseExtractor.get_property" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core", - "module_short": "spikeinterface.core", - "name": "BaseExtractor.get_property" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "BaseExtractor.get_property" - } - ], - "recording_good_channels.split_by": [ - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.preprocessing.detect_bad_channels", - "module_short": "spikeinterface.preprocessing.detect_bad_channels", - "name": "DetectAndRemoveBadChannelsRecording.split_by" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.preprocessing", - "module_short": "spikeinterface.preprocessing", - "name": "DetectAndRemoveBadChannelsRecording.split_by" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "DetectAndRemoveBadChannelsRecording.split_by" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core.channelslice", - "module_short": "spikeinterface", - "name": "ChannelSliceRecording.split_by" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core", - "module_short": "spikeinterface", - "name": "ChannelSliceRecording.split_by" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "ChannelSliceRecording.split_by" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core.baserecording", - "module_short": "spikeinterface", - "name": "BaseRecording.split_by" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core", - "module_short": "spikeinterface", - "name": "BaseRecording.split_by" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "BaseRecording.split_by" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core.baserecordingsnippets", - "module_short": "spikeinterface", - "name": "BaseRecordingSnippets.split_by" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core", - "module_short": "spikeinterface", - "name": "BaseRecordingSnippets.split_by" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "BaseRecordingSnippets.split_by" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core.base", - "module_short": "spikeinterface.core.base", - "name": "BaseExtractor.split_by" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core", - "module_short": "spikeinterface.core", - "name": "BaseExtractor.split_by" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "BaseExtractor.split_by" - } - ], - "recording_with_probe": [ - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core.generate", - "module_short": "spikeinterface", - "name": "InjectTemplatesRecording" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.core", - "module_short": "spikeinterface", - "name": "InjectTemplatesRecording" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface", - "module_short": "spikeinterface", - "name": "InjectTemplatesRecording" - } - ], - "spre.bandpass_filter": [ - { - "is_class": false, - "is_explicit": false, - "module": "builtins", - "module_short": "builtins", - "name": "function" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.preprocessing", - "module_short": "spikeinterface.preprocessing", - "name": "bandpass_filter" - } - ], - "spre.detect_and_remove_bad_channels": [ - { - "is_class": false, - "is_explicit": false, - "module": "builtins", - "module_short": "builtins", - "name": "function" - }, - { - "is_class": false, - "is_explicit": false, - "module": "spikeinterface.preprocessing", - "module_short": "spikeinterface.preprocessing", - "name": "detect_and_remove_bad_channels" - } - ], - "tetrode_1": [ - { - "is_class": false, - "is_explicit": false, - "module": "probeinterface.probe", - "module_short": "probeinterface", - "name": "Probe" - }, - { - "is_class": false, - "is_explicit": false, - "module": "probeinterface", - "module_short": "probeinterface", - "name": "Probe" - } - ], - "tetrode_1.create_auto_shape": [ - { - "is_class": false, - "is_explicit": false, - "module": "probeinterface.probe", - "module_short": "probeinterface", - "name": "Probe.create_auto_shape" - }, - { - "is_class": false, - "is_explicit": false, - "module": "probeinterface", - "module_short": "probeinterface", - "name": "Probe.create_auto_shape" - } - ], - "tetrode_2": [ - { - "is_class": false, - "is_explicit": false, - "module": "probeinterface.probe", - "module_short": "probeinterface", - "name": "Probe" - }, - { - "is_class": false, - "is_explicit": false, - "module": "probeinterface", - "module_short": "probeinterface", - "name": "Probe" - } - ], - "tetrode_2.create_auto_shape": [ - { - "is_class": false, - "is_explicit": false, - "module": "probeinterface.probe", - "module_short": "probeinterface", - "name": "Probe.create_auto_shape" - }, - { - "is_class": false, - "is_explicit": false, - "module": "probeinterface", - "module_short": "probeinterface", - "name": "Probe.create_auto_shape" - } - ], - "tetrode_2.move": [ - { - "is_class": false, - "is_explicit": false, - "module": "probeinterface.probe", - "module_short": "probeinterface", - "name": "Probe.move" - }, - { - "is_class": false, - "is_explicit": false, - "module": "probeinterface", - "module_short": "probeinterface", - "name": "Probe.move" - } - ], - "tetrode_group": [ - { - "is_class": false, - "is_explicit": false, - "module": "probeinterface.probegroup", - "module_short": "probeinterface", - "name": "ProbeGroup" - }, - { - "is_class": false, - "is_explicit": false, - "module": "probeinterface", - "module_short": "probeinterface", - "name": "ProbeGroup" - } - ], - "tetrode_group.add_probe": [ - { - "is_class": false, - "is_explicit": false, - "module": "probeinterface.probegroup", - "module_short": "probeinterface", - "name": "ProbeGroup.add_probe" - }, - { - "is_class": false, - "is_explicit": false, - "module": "probeinterface", - "module_short": "probeinterface", - "name": "ProbeGroup.add_probe" - } - ], - "tetrode_group.set_global_device_channel_indices": [ - { - "is_class": false, - "is_explicit": false, - "module": "probeinterface.probegroup", - "module_short": "probeinterface", - "name": "ProbeGroup.set_global_device_channel_indices" - }, - { - "is_class": false, - "is_explicit": false, - "module": "probeinterface", - "module_short": "probeinterface", - "name": "ProbeGroup.set_global_device_channel_indices" - } - ] -} diff --git a/doc/forhowto/plot_working_with_tetrodes.ipynb b/doc/forhowto/plot_working_with_tetrodes.ipynb deleted file mode 100644 index 5e27d20069..0000000000 --- a/doc/forhowto/plot_working_with_tetrodes.ipynb +++ /dev/null @@ -1,194 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n# Work with tetrodes\n\nTetrodes are a common recording method for electrophysiological data. It is also common\nto record from several tetrodes at the same time. In this 'how to' we'll see how to\nwork with data from two tetrodes, each with four channels.\n\nWe'll start by importing some functions we'll use in this How To guide\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "import spikeinterface.preprocessing as spre\nfrom spikeinterface.widgets import plot_traces, plot_probe_map\nfrom spikeinterface import generate_ground_truth_recording\n\nfrom probeinterface import generate_tetrode, ProbeGroup" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In practice, you would read in your raw data from a file. Instead, we will generate a\nrecording with eight channels. We can also set a duration, number of units and\nsampling frequency.\n\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "recording, _ = generate_ground_truth_recording(\n durations = [60], # make the recording 60s long\n sampling_frequency=30_000,\n num_channels=8,\n num_units=10,\n)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We now need to define the probe. This will tell the recording which channels came from\nwhich tetrode. To do this, we will use the :code:`generate_tetrode` function from :code:`ProbeInterface`\nto generate two 4-channel probes (representing one tetrode each). In our case, since we\ndon't know the relative distances between the tetrodes, we will move the second\ntetrode away from the first by 100 microns. This is just so we can visualize the\nresults more easily. Eventually, we will sort each tetrode separately, so their\nrelative distance won't affect the results.\n\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "# Technically, we will add each tetrode to a :code:`ProbeGroup`. Read more in the ProbeInterface\n# docs.\n\n# Create each individual tetrode\ntetrode_1 = generate_tetrode()\ntetrode_1.create_auto_shape()\n\ntetrode_2 = generate_tetrode()\ntetrode_2.move([100, 0])\ntetrode_2.create_auto_shape()\n\n# Add the two tetrodes to a ProbeGroup\ntetrode_group = ProbeGroup()\ntetrode_group.add_probe(tetrode_1)\ntetrode_group.add_probe(tetrode_2)\n\n# Now we need to \"wire\" our tetrodes to ensure that each contact\n# can be associated with the correct channel when we attach it\n# to the recording. In this example we are just using `range`\n# but see ProbeInterface for more tutorials on wiring\ntetrode_group.set_global_device_channel_indices(range(8))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can now attach the :code:`tetrode_group` to our recording. To check if this worked, we'll\nplot the probe map\n\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "recording_with_probe = recording.set_probegroup(tetrode_group)\nplot_probe_map(recording_with_probe)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Looks good! Now that the recording is aware of the probe geometry, we can\nbegin a standard spike sorting pipeline. First, we can apply preprocessing.\nNote that we apply this preprocessing on the entire bundle of tetrodes.\n\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "preprocessed_recording = spre.bandpass_filter(recording_with_probe)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "WARNING: a very common preprocessing step is to apply a common median\nreference. This subtracts the median signal from all channels to help\nremove noise. However, for a tetrode, a spike is often seen on all\nchannels. So removing the median can remove the entire spike!\nThis is still a danger if you have two tetrodes in a bundle, which\nmight pick up the same spike, but becomes less dangerous\nas the number of tetrodes in your bundle increases.\n\nTetrodes often have dead channels, so it is advised to try and detect\nand remove these. For tetrodes, we should use a detection method which\ndoesn't depend on the channel locations such as std or mad:\n\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "recording_good_channels = spre.detect_and_remove_bad_channels(\n preprocessed_recording,\n method = \"std\",\n)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "It can be a good idea to sort your tetrode data separately for each tetrode.\nWhen we use :code:`set_probegroup`, the channels are automatically\nlabelled by which probe in the probe group they belong to. We can access\nthis labeling using the \"group\" property.\n\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "print(recording_good_channels.get_property(\"group\"))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can then use this information to split the recording by the group property:\n\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "grouped_recordings = recording_good_channels.split_by('group')\nprint(grouped_recordings)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now that we've got preprocess, clean data. Let's take a look at a\nsnippet of data from the first group:\n\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "plot_traces(grouped_recordings[0])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Beautiful! We are now ready to sort. To read more about sorting by group, see\n`sorting-by-channel-group`. Note that many modern sorters are designed\nto sort data from high-density probes and will fail for tetrodes. Please read\neach spike sorter's documentation to find out if it is appropriate for tetrodes.\n\n" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.13.2" - } - }, - "nbformat": 4, - "nbformat_minor": 0 -} diff --git a/doc/forhowto/plot_working_with_tetrodes.py b/doc/forhowto/plot_working_with_tetrodes.py deleted file mode 100644 index 0c652a5186..0000000000 --- a/doc/forhowto/plot_working_with_tetrodes.py +++ /dev/null @@ -1,117 +0,0 @@ -""" -Work with tetrodes -================== - -Tetrodes are a common recording method for electrophysiological data. It is also common -to record from several tetrodes at the same time. In this 'how to' we'll see how to -work with data from two tetrodes, each with four channels. - -We'll start by importing some functions we'll use in this How To guide -""" - -import spikeinterface.preprocessing as spre -from spikeinterface.widgets import plot_traces, plot_probe_map -from spikeinterface import generate_ground_truth_recording - -from probeinterface import generate_tetrode, ProbeGroup - -############################################################################## -# In practice, you would read in your raw data from a file. Instead, we will generate a -# recording with eight channels. We can also set a duration, number of units and -# sampling frequency. - -recording, _ = generate_ground_truth_recording( - durations = [60], # make the recording 60s long - sampling_frequency=30_000, - num_channels=8, - num_units=10, -) - -############################################################################## -# We now need to define the probe. This will tell the recording which channels came from -# which tetrode. To do this, we will use the :code:`generate_tetrode` function from :code:`ProbeInterface` -# to generate two 4-channel probes (representing one tetrode each). In our case, since we -# don't know the relative distances between the tetrodes, we will move the second -# tetrode away from the first by 100 microns. This is just so we can visualize the -# results more easily. Eventually, we will sort each tetrode separately, so their -# relative distance won't affect the results. - -# Technically, we will add each tetrode to a :code:`ProbeGroup`. Read more in the ProbeInterface -# docs. - -# Create each individual tetrode -tetrode_1 = generate_tetrode() -tetrode_1.create_auto_shape() - -tetrode_2 = generate_tetrode() -tetrode_2.move([100, 0]) -tetrode_2.create_auto_shape() - -# Add the two tetrodes to a ProbeGroup -tetrode_group = ProbeGroup() -tetrode_group.add_probe(tetrode_1) -tetrode_group.add_probe(tetrode_2) - -# Now we need to "wire" our tetrodes to ensure that each contact -# can be associated with the correct channel when we attach it -# to the recording. In this example we are just using `range` -# but see ProbeInterface for more tutorials on wiring -tetrode_group.set_global_device_channel_indices(range(8)) - -############################################################################## -# We can now attach the :code:`tetrode_group` to our recording. To check if this worked, we'll -# plot the probe map - -recording_with_probe = recording.set_probegroup(tetrode_group) -plot_probe_map(recording_with_probe) - -############################################################################## -# Looks good! Now that the recording is aware of the probe geometry, we can -# begin a standard spike sorting pipeline. First, we can apply preprocessing. -# Note that we apply this preprocessing on the entire bundle of tetrodes. - -preprocessed_recording = spre.bandpass_filter(recording_with_probe) - -############################################################################## -# WARNING: a very common preprocessing step is to apply a common median -# reference. This subtracts the median signal from all channels to help -# remove noise. However, for a tetrode, a spike is often seen on all -# channels. So removing the median can remove the entire spike! -# This is still a danger if you have two tetrodes in a bundle, which -# might pick up the same spike, but becomes less dangerous -# as the number of tetrodes in your bundle increases. -# -# Tetrodes often have dead channels, so it is advised to try and detect -# and remove these. For tetrodes, we should use a detection method which -# doesn't depend on the channel locations such as std or mad: - -recording_good_channels = spre.detect_and_remove_bad_channels( - preprocessed_recording, - method = "std", -) - -############################################################################## -# It can be a good idea to sort your tetrode data separately for each tetrode. -# When we use :code:`set_probegroup`, the channels are automatically -# labelled by which probe in the probe group they belong to. We can access -# this labeling using the "group" property. - -print(recording_good_channels.get_property("group")) - -############################################################################## -# We can then use this information to split the recording by the group property: - -grouped_recordings = recording_good_channels.split_by('group') -print(grouped_recordings) - -############################################################################## -# Now that we've got preprocess, clean data. Let's take a look at a -# snippet of data from the first group: - -plot_traces(grouped_recordings[0]) - -############################################################################## -# Beautiful! We are now ready to sort. To read more about sorting by group, see -# :ref:`sorting-by-channel-group`. Note that many modern sorters are designed -# to sort data from high-density probes and will fail for tetrodes. Please read -# each spike sorter's documentation to find out if it is appropriate for tetrodes. diff --git a/doc/forhowto/plot_working_with_tetrodes.py.md5 b/doc/forhowto/plot_working_with_tetrodes.py.md5 deleted file mode 100644 index b6de93f1f2..0000000000 --- a/doc/forhowto/plot_working_with_tetrodes.py.md5 +++ /dev/null @@ -1 +0,0 @@ -f828444cacd54f1e64ce26991cd1f9d6 diff --git a/doc/forhowto/plot_working_with_tetrodes.rst b/doc/forhowto/plot_working_with_tetrodes.rst deleted file mode 100644 index 57ad57b03f..0000000000 --- a/doc/forhowto/plot_working_with_tetrodes.rst +++ /dev/null @@ -1,319 +0,0 @@ - -.. DO NOT EDIT. -.. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. -.. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: -.. "forhowto/plot_working_with_tetrodes.py" -.. LINE NUMBERS ARE GIVEN BELOW. - -.. only:: html - - .. note:: - :class: sphx-glr-download-link-note - - :ref:`Go to the end ` - to download the full example code. - -.. rst-class:: sphx-glr-example-title - -.. _sphx_glr_forhowto_plot_working_with_tetrodes.py: - - -Work with tetrodes -================== - -Tetrodes are a common recording method for electrophysiological data. It is also common -to record from several tetrodes at the same time. In this 'how to' we'll see how to -work with data from two tetrodes, each with four channels. - -We'll start by importing some functions we'll use in this How To guide - -.. GENERATED FROM PYTHON SOURCE LINES 11-18 - -.. code-block:: Python - - - import spikeinterface.preprocessing as spre - from spikeinterface.widgets import plot_traces, plot_probe_map - from spikeinterface import generate_ground_truth_recording - - from probeinterface import generate_tetrode, ProbeGroup - - - - - - - - -.. GENERATED FROM PYTHON SOURCE LINES 19-22 - -In practice, you would read in your raw data from a file. Instead, we will generate a -recording with eight channels. We can also set a duration, number of units and -sampling frequency. - -.. GENERATED FROM PYTHON SOURCE LINES 22-30 - -.. code-block:: Python - - - recording, _ = generate_ground_truth_recording( - durations = [60], # make the recording 60s long - sampling_frequency=30_000, - num_channels=8, - num_units=10, - ) - - - - - - - - -.. GENERATED FROM PYTHON SOURCE LINES 31-38 - -We now need to define the probe. This will tell the recording which channels came from -which tetrode. To do this, we will use the :code:`generate_tetrode` function from :code:`ProbeInterface` -to generate two 4-channel probes (representing one tetrode each). In our case, since we -don't know the relative distances between the tetrodes, we will move the second -tetrode away from the first by 100 microns. This is just so we can visualize the -results more easily. Eventually, we will sort each tetrode separately, so their -relative distance won't affect the results. - -.. GENERATED FROM PYTHON SOURCE LINES 38-61 - -.. code-block:: Python - - - # Technically, we will add each tetrode to a :code:`ProbeGroup`. Read more in the ProbeInterface - # docs. - - # Create each individual tetrode - tetrode_1 = generate_tetrode() - tetrode_1.create_auto_shape() - - tetrode_2 = generate_tetrode() - tetrode_2.move([100, 0]) - tetrode_2.create_auto_shape() - - # Add the two tetrodes to a ProbeGroup - tetrode_group = ProbeGroup() - tetrode_group.add_probe(tetrode_1) - tetrode_group.add_probe(tetrode_2) - - # Now we need to "wire" our tetrodes to ensure that each contact - # can be associated with the correct channel when we attach it - # to the recording. In this example we are just using `range` - # but see ProbeInterface for more tutorials on wiring - tetrode_group.set_global_device_channel_indices(range(8)) - - - - - - - - -.. GENERATED FROM PYTHON SOURCE LINES 62-64 - -We can now attach the :code:`tetrode_group` to our recording. To check if this worked, we'll -plot the probe map - -.. GENERATED FROM PYTHON SOURCE LINES 64-68 - -.. code-block:: Python - - - recording_with_probe = recording.set_probegroup(tetrode_group) - plot_probe_map(recording_with_probe) - - - - -.. image-sg:: /forhowto/images/sphx_glr_plot_working_with_tetrodes_001.png - :alt: plot working with tetrodes - :srcset: /forhowto/images/sphx_glr_plot_working_with_tetrodes_001.png - :class: sphx-glr-single-img - - -.. rst-class:: sphx-glr-script-out - - .. code-block:: none - - - - - - -.. GENERATED FROM PYTHON SOURCE LINES 69-72 - -Looks good! Now that the recording is aware of the probe geometry, we can -begin a standard spike sorting pipeline. First, we can apply preprocessing. -Note that we apply this preprocessing on the entire bundle of tetrodes. - -.. GENERATED FROM PYTHON SOURCE LINES 72-75 - -.. code-block:: Python - - - preprocessed_recording = spre.bandpass_filter(recording_with_probe) - - - - - - - - -.. GENERATED FROM PYTHON SOURCE LINES 76-87 - -WARNING: a very common preprocessing step is to apply a common median -reference. This subtracts the median signal from all channels to help -remove noise. However, for a tetrode, a spike is often seen on all -channels. So removing the median can remove the entire spike! -This is still a danger if you have two tetrodes in a bundle, which -might pick up the same spike, but becomes less dangerous -as the number of tetrodes in your bundle increases. - -Tetrodes often have dead channels, so it is advised to try and detect -and remove these. For tetrodes, we should use a detection method which -doesn't depend on the channel locations such as std or mad: - -.. GENERATED FROM PYTHON SOURCE LINES 87-93 - -.. code-block:: Python - - - recording_good_channels = spre.detect_and_remove_bad_channels( - preprocessed_recording, - method = "std", - ) - - - - - - - - -.. GENERATED FROM PYTHON SOURCE LINES 94-98 - -It can be a good idea to sort your tetrode data separately for each tetrode. -When we use :code:`set_probegroup`, the channels are automatically -labelled by which probe in the probe group they belong to. We can access -this labeling using the "group" property. - -.. GENERATED FROM PYTHON SOURCE LINES 98-101 - -.. code-block:: Python - - - print(recording_good_channels.get_property("group")) - - - - - -.. rst-class:: sphx-glr-script-out - - .. code-block:: none - - [0 0 0 0 1 1 1 1] - - - - -.. GENERATED FROM PYTHON SOURCE LINES 102-103 - -We can then use this information to split the recording by the group property: - -.. GENERATED FROM PYTHON SOURCE LINES 103-107 - -.. code-block:: Python - - - grouped_recordings = recording_good_channels.split_by('group') - print(grouped_recordings) - - - - - -.. rst-class:: sphx-glr-script-out - - .. code-block:: none - - {0: GroundTruthRecording (ChannelSliceRecording): 4 channels - 30.0kHz - 1 segments - 1,800,000 samples - 60.00s (1.00 minutes) - float32 dtype - 27.47 MiB, 1: GroundTruthRecording (ChannelSliceRecording): 4 channels - 30.0kHz - 1 segments - 1,800,000 samples - 60.00s (1.00 minutes) - float32 dtype - 27.47 MiB} - - - - -.. GENERATED FROM PYTHON SOURCE LINES 108-110 - -Now that we've got preprocess, clean data. Let's take a look at a -snippet of data from the first group: - -.. GENERATED FROM PYTHON SOURCE LINES 110-113 - -.. code-block:: Python - - - plot_traces(grouped_recordings[0]) - - - - -.. image-sg:: /forhowto/images/sphx_glr_plot_working_with_tetrodes_002.png - :alt: plot working with tetrodes - :srcset: /forhowto/images/sphx_glr_plot_working_with_tetrodes_002.png - :class: sphx-glr-single-img - - -.. rst-class:: sphx-glr-script-out - - .. code-block:: none - - - - - - -.. GENERATED FROM PYTHON SOURCE LINES 114-118 - -Beautiful! We are now ready to sort. To read more about sorting by group, see -:ref:`sorting-by-channel-group`. Note that many modern sorters are designed -to sort data from high-density probes and will fail for tetrodes. Please read -each spike sorter's documentation to find out if it is appropriate for tetrodes. - - -.. rst-class:: sphx-glr-timing - - **Total running time of the script:** (0 minutes 0.644 seconds) - - -.. _sphx_glr_download_forhowto_plot_working_with_tetrodes.py: - -.. only:: html - - .. container:: sphx-glr-footer sphx-glr-footer-example - - .. container:: sphx-glr-download sphx-glr-download-jupyter - - :download:`Download Jupyter notebook: plot_working_with_tetrodes.ipynb ` - - .. container:: sphx-glr-download sphx-glr-download-python - - :download:`Download Python source code: plot_working_with_tetrodes.py ` - - .. container:: sphx-glr-download sphx-glr-download-zip - - :download:`Download zipped: plot_working_with_tetrodes.zip ` - - -.. only:: html - - .. rst-class:: sphx-glr-signature - - `Gallery generated by Sphinx-Gallery `_ diff --git a/doc/forhowto/plot_working_with_tetrodes.zip b/doc/forhowto/plot_working_with_tetrodes.zip deleted file mode 100644 index 12c4fb6c23042a68f0bf7972533f414208db03ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13192 zcmdU0Pj4H?6?c=iD0r<;1qw{4gCu}vWhn>(0Xn2blNt^TAr;_**H{gAhvY`fneEQ3 zXg0_p$9{yOhkl8CnfB5z(PIz&y*E3%E0MBAkrE;rhQOVfH#6_=@4dG?efjavpFW|_ zuj9YHIs5m2ev{%W{r@eV6}fTo+>{rYp2YLaO=G8AX;Ni}#iHNu_g-U6(0~X7y_2O+ zuXk3j60%f6ip0!jMvGD4cjqVdYE-m(3JtXgmRx-Km)iXLiM0?dCaFD&e2> z=(_$&w5uoV=B6P!5K1OfKVxjFQY2HUwaV?V*L&@WIaxX}T8L~`n9|V&t-%S#l}=n{ zw5>O-tP)v$o|i4VF3;PfAniGRO?T*GeQ(d$qL6LA}!o9D|$(LRYhqDuo$~N@tLT z)F}u;9gCdAH!js*Dy5SJRHxZxAYyUSoZtq&@AU*eVIzwLZ$3MCI}kf!CNH4tQ2K_T z`0T)n+~^6f37f~w<|ju7@xj5tfQND7I4JbV=j}5-|H*UA+P??UfrlCfpp{Btlpf0Jy)KnVGwUQ~Sus*>t`xbFhG^%8GlR)AWZ`gG z1H;C0E*JhFKmSL{W7za%(K5TWgHSWt8%FL z%)rGfX|sGW6o0(LZ80rhwEVVkiQa{VQ&?3<@-Z|E8{jBe$rP{M69!F;kmE5zM9m7` z6y~!d&Qvnh6fL@&$uzyX7o;SEs9SGzJ`~@Oo8ZHK*xJvO9(o#1?EkoAPinu ze;njlW`HRI7zbB_r*EX{`GPPJPjWMod7P?C#H-+PV^Sv=^d4`v_xb)kIa}f%xs#eH z#Ejan1zGYz&xunUHUm;)7n)2}av`!Ym`Gk3cu8^W1dsxI2xu^SSve4o5bGOGdl2bI zPC5c0j__07x6vs6w%=py!ovht;74oR*r9eGjQZM`3o9nZq@S?LvL;?p9LA$_0<{S7 zG~#bIQGk1{^iB`FCZ$mm_!TM0W2drAJ+6bh^Z2mH3I#|2Eb=8eVfL0JBv};s0#rMo zZwP9y4EzrthZL3Puq>`jB=w^+QNY0oM}Tk8Y&vMb@V#EUK&36JgW(gb9FB0-0!9`C zCINsx7~@}m@y)9juf944zX0eLAzx?@%aGcsg7{A^j5*Nc6*HA)%=A)?RSA3rwlaXQ z)rb%Q(n~a?@e z5}qtQ?z%E^48d^|0%w!)o5naR%!#xn9?5o=hwZH%ca6?t?K%@a5q<31zaO-XJeqWk z0w{Yoft(Y1Y}gz5JgMfY&y`wy<}-APqxA%GMz8A#OI)v`$W?cKK48TO;`T)V1j!lr z%y$tTmA{`=qrl7==_v+R68If^Fjq{Rchn;5{K=_h1^lrezb zP&NUt=wf`Y=33BEe$dq|QqMMOUcDs~jz^2VU0$|}aLZg-CUPG!mY`rA$adkuCcqA@ zc??97D`=`O|9q|7E?f}hw-WiRxuEh6CFoXXMS;v4p{-N00b_hZ!xsTpIu($;<;%Sx z5WW4P#P1d0eKxN0Pe@M*DG=_0drToaZ*h#N=!s81gn z*Q3uyi;!eK<5|dKT4*qndI6HDDiMl6PL(J?-~g!JA>=8lLM+hu6Ni_ooX*3zRJ^U%|h|pDg{esL4 zm>H<%3i;k?Q=WW^^5j4Md-SXSp)N`P#rw;XS+UTg?@-d{C-5t_e=Oc`eS;p+habmo zQ78=cXR^FV&0NFb*2D0_lDLA=@4j!IT7cn%R(N7eDAI6&P0cWbqew^kECfE{dV@|H zI}BloZoE#_Gtv;7r{Yn|Hp-rnzI)x1?z)}IXQcbJ0N(Q7n)9oLM)jIjVCtPpU};9j z2?~`CGSXF^H@qOS0nK*|rh=d|i2Ib*;zUlI+V?==-ZnbF8?JvUH@kT$RR2eYh0cDoT^hZ?z^(1aDoEe$>w3zN_hknScxJ zkht`rf_kGFH&oO+;_XZ%`Ky*sj^TJKMPo5Ffah;jP0%KEj@m8JC$ z&pF)p=b@AeWx?RHA}+5-x3900L_&SwE(La44}?mYX%ke|sIb%WJCxY3^Jk43`@_W& zVk^ayt=HWnyVG_t7Hy>`LI`FHEfFHKX-6c|p&opvh6t)FTqND3 z9}?+1w?iU*hi(X2%2}uhZPE^?D?-=;O zrjHX*BPZ(P@k8aT+idTku(xq{C(_$$?f~PF(XZ(3M7})(lp7j0!$+;3Yc!^stM5OQ zf}tovKz2**sz)s+&gQz%VXaOZVCqe+wg*BLlq+u3enTPjHr=;JE#wb34j)KbTWuyr zdOK}IIOY1yfvt2ABfae=;tJhEn}@qO{iU{0{{rn&yv$#ygj#=fKd6saZHrtkVvTo; z@w|V!zz-I*IBNS(IbO%9W77R_it>vds0F^%gWM}F?De} zL+D%ulIU~NNt(Sdgm;th(+Q3FM@#K2dfz=(@9=g~J*7`S#E$&(*{_$T&z4=HX+pT7LXFKNX``1g1G{nsIV`#(>7Y$^Z% From 3de9a15cd312ca75beed9c77b2fe3425d5ca39e3 Mon Sep 17 00:00:00 2001 From: Alessio Buccino Date: Tue, 9 Dec 2025 12:14:17 +0100 Subject: [PATCH 10/19] More info on forhowto --- examples/forhowto/README.md | 8 ++++++++ examples/forhowto/README.rst | 4 ---- 2 files changed, 8 insertions(+), 4 deletions(-) create mode 100644 examples/forhowto/README.md delete mode 100644 examples/forhowto/README.rst diff --git a/examples/forhowto/README.md b/examples/forhowto/README.md new file mode 100644 index 0000000000..5a68e1a1bd --- /dev/null +++ b/examples/forhowto/README.md @@ -0,0 +1,8 @@ +# For "How to" + +These python scripts are files which we would like sphinx-gallery to run, +but are linked by the how to guide. + +All the python files in this folder are built by sphinx-gallery. The resulting +documentation page can be added to the "How to" section of the documentation by modifying +the file `doc/how_to/index.rst`. diff --git a/examples/forhowto/README.rst b/examples/forhowto/README.rst deleted file mode 100644 index 34805dba84..0000000000 --- a/examples/forhowto/README.rst +++ /dev/null @@ -1,4 +0,0 @@ -For how to ----------- - -These documents are files which we would like sphinx-gallery to run, but are linked by the how to guide. From 76cfcc4709975d0db93ee613266a29bb9437ba3c Mon Sep 17 00:00:00 2001 From: Alessio Buccino Date: Tue, 9 Dec 2025 12:24:33 +0100 Subject: [PATCH 11/19] rst needed to be rst... --- examples/forhowto/README.md | 8 -------- 1 file changed, 8 deletions(-) delete mode 100644 examples/forhowto/README.md diff --git a/examples/forhowto/README.md b/examples/forhowto/README.md deleted file mode 100644 index 5a68e1a1bd..0000000000 --- a/examples/forhowto/README.md +++ /dev/null @@ -1,8 +0,0 @@ -# For "How to" - -These python scripts are files which we would like sphinx-gallery to run, -but are linked by the how to guide. - -All the python files in this folder are built by sphinx-gallery. The resulting -documentation page can be added to the "How to" section of the documentation by modifying -the file `doc/how_to/index.rst`. From a0d243f5fda86fec67d00c5c814955a13fd99874 Mon Sep 17 00:00:00 2001 From: Alessio Buccino Date: Tue, 9 Dec 2025 12:24:54 +0100 Subject: [PATCH 12/19] rst needed to be rst... --- examples/forhowto/README.rst | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 examples/forhowto/README.rst diff --git a/examples/forhowto/README.rst b/examples/forhowto/README.rst new file mode 100644 index 0000000000..09ef2f2b24 --- /dev/null +++ b/examples/forhowto/README.rst @@ -0,0 +1,9 @@ +For "How to" +============ + +These python scripts are files which we would like sphinx-gallery to run, +but are linked by the how to guide. + +All the python files in this folder are built by sphinx-gallery. The resulting +documentation page can be added to the "How to" section of the documentation by modifying +the file ``doc/how_to/index.rst``. From 6c0dd0f9f782b9d29b81c761f75c0327e4467c28 Mon Sep 17 00:00:00 2001 From: Alessio Buccino Date: Tue, 9 Dec 2025 12:27:44 +0100 Subject: [PATCH 13/19] Add seaborn to docs requirements --- pyproject.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/pyproject.toml b/pyproject.toml index 91b3b5d45a..929b1e62f8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -208,6 +208,7 @@ docs = [ "hdbscan>=0.8.33", # For sorters spykingcircus2 + tridesclous "numba", # For many postprocessing functions "networkx", + "seaborn", "skops", # For automated curation "scikit-learn", # For automated curation "huggingface_hub", # For automated curation From f0fdd34853ca732fc8ffac91e07ae461b4628cfc Mon Sep 17 00:00:00 2001 From: Alessio Buccino Date: Tue, 9 Dec 2025 12:37:20 +0100 Subject: [PATCH 14/19] Make recording smaller --- examples/forhowto/plot_extract_lfps.py | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/examples/forhowto/plot_extract_lfps.py b/examples/forhowto/plot_extract_lfps.py index 4eb4393c22..714c39af0b 100644 --- a/examples/forhowto/plot_extract_lfps.py +++ b/examples/forhowto/plot_extract_lfps.py @@ -3,10 +3,29 @@ ============ Understanding filtering artifacts and chunking when extracting LFPs +------------------------------------------------------------------- Local Field Potentials (LFPs) are low-frequency signals (<300 Hz) that reflect the summed activity of many neurons. Extracting LFPs from high-sampling-rate recordings requires bandpass filtering, but this can introduce artifacts -when not done carefully, especially when data is processed in chunks (for memory efficiency). +when not done carefully, especially when data is processed in chunks (which is usually the required because datasets +cannot be loaded entirely into memory). + +Before we get started, let's introduce some important concepts: + +Chunk +~~~~~ + +A "chunk" is a piece of recording that gets processed in parallel by SpikeInterface. +The default chunk duration for most operations is 1 second, but we'll see how this is not adequate for LFP +processing. + + +Margin +~~~~~~ + +When we apply a filter on chunked data, we extract additional "margins" of traces at the chunk borders. +This is done to reduce border artifacts. + This tutorial demonstrates: @@ -44,7 +63,7 @@ # Generate a ground truth recording with spikes # Use a higher sampling rate (30 kHz) to simulate raw neural data recording, sorting = generate_ground_truth_recording( - durations=[300.0], # 300 s + durations=[60.0], sampling_frequency=30000.0, num_channels=1, num_units=4, From f1f47bb15ef9cc914f49fd1eb0e092c4ff248a36 Mon Sep 17 00:00:00 2001 From: Alessio Buccino Date: Tue, 9 Dec 2025 12:41:10 +0100 Subject: [PATCH 15/19] cache to folder instead of memory --- doc/conf.py | 1 + examples/forhowto/plot_extract_lfps.py | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/doc/conf.py b/doc/conf.py index 6a50bf634d..b272e290e0 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -38,6 +38,7 @@ '../examples/tutorials/qualitymetrics/curated_sorting', '../examples/tutorials/qualitymetrics/clean_analyzer.zarr', '../examples/tutorials/widgets/waveforms_mearec', + '../examples/forhowto/cached' ] diff --git a/examples/forhowto/plot_extract_lfps.py b/examples/forhowto/plot_extract_lfps.py index 714c39af0b..81a1c213d8 100644 --- a/examples/forhowto/plot_extract_lfps.py +++ b/examples/forhowto/plot_extract_lfps.py @@ -201,7 +201,7 @@ # Since in this toy case we have a single channel 5-min recording, we can use this as "optimal". recording_optimal = recording_filt.save( - format="memory", + folder="./cached/optimal", chunk_duration="1000s", progress_bar=False ) @@ -225,7 +225,7 @@ ignore_low_freq_error=True, ) recording_chunk = recording_chunk.save( - format="memory", + folder=f"./cached/{margin_ms}_{chunk_duration}", chunk_duration=chunk_duration, verbose=False, progress_bar=False From 22bc2d716b34defafbf1db57db8e29bea6df3700 Mon Sep 17 00:00:00 2001 From: Alessio Buccino Date: Tue, 9 Dec 2025 14:50:09 +0100 Subject: [PATCH 16/19] Add ignore_low_freq_error to kwargs --- src/spikeinterface/preprocessing/filter.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/spikeinterface/preprocessing/filter.py b/src/spikeinterface/preprocessing/filter.py index b57ebe5519..1ccab2b833 100644 --- a/src/spikeinterface/preprocessing/filter.py +++ b/src/spikeinterface/preprocessing/filter.py @@ -262,7 +262,12 @@ def __init__( ) dtype = fix_dtype(recording, dtype) self._kwargs = dict( - recording=recording, freq_min=freq_min, freq_max=freq_max, margin_ms=margin_ms, dtype=dtype.str + recording=recording, + freq_min=freq_min, + freq_max=freq_max, + margin_ms=margin_ms, + dtype=dtype.str, + ignore_low_freq_error=ignore_low_freq_error, ) self._kwargs.update(filter_kwargs) From d561025ed8394a36e8f4cbe498ca2bcee51e1501 Mon Sep 17 00:00:00 2001 From: Alessio Buccino Date: Tue, 9 Dec 2025 16:58:07 +0100 Subject: [PATCH 17/19] Chris' comments --- examples/forhowto/plot_extract_lfps.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/examples/forhowto/plot_extract_lfps.py b/examples/forhowto/plot_extract_lfps.py index 81a1c213d8..53c4c256c2 100644 --- a/examples/forhowto/plot_extract_lfps.py +++ b/examples/forhowto/plot_extract_lfps.py @@ -138,12 +138,15 @@ ############################################################################## # **Why does this fail?** # -# The error occurs because by default in SpikeInterface when highpass filtering below 100 Hz. +# The error always occurs in SpikeInterface when highpass filtering below 100 Hz, to remind the user that they need to be careful. # Filters with very low cutoff frequencies have long impulse responses, which require larger margins to avoid edge artifacts between chunks. # # The filter length (and required margin) scales inversely with the highpass frequency. A 1 Hz highpass # filter requires a margin of several seconds, while a 300 Hz highpass (for spike extraction) only needs # a few milliseconds. +# +# **This error is to inform the user that extra care should be used when dealing with LFP signals!** + ############################################################################## # 3. Understanding chunking and margins @@ -153,11 +156,8 @@ # a "margin" (extra samples at the edges) to avoid edge artifacts when filtering. Let's demonstrate # this by saving the filtered data with different chunking strategies. # -# **This error is to inform the user that extra care should be used when dealing with LFP signals!** -# -# We can ignore this error, but let's make sure we understand what it's happening. +# We can explicitly ignore the previous error, but let's make sure we understand what is happening. -# We can ignore this error, but let's see what is happening recording_filt = spre.bandpass_filter( recording_with_lfp, freq_min=1.0, freq_max=300.0, ignore_low_freq_error=True ) @@ -172,6 +172,7 @@ ############################################################################## # This effectively means that if we plot 1-s snippet of traces, a total of 11 s will actually be read and filtered. +# Hence the computational "overhead" is very large. # Note that the margin can be overridden with the `margin_ms` argument, but we do not recommend changing it. _ = sw.plot_traces(recording_filt, time_range=[20, 21]) From b70b2fa9658a3da8c974026b7a6b6b26444ecba8 Mon Sep 17 00:00:00 2001 From: Alessio Buccino Date: Wed, 17 Dec 2025 10:34:06 +0100 Subject: [PATCH 18/19] Make margin_ms None by default in BaseFilterRecording --- src/spikeinterface/preprocessing/filter.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/spikeinterface/preprocessing/filter.py b/src/spikeinterface/preprocessing/filter.py index 1ccab2b833..732b310123 100644 --- a/src/spikeinterface/preprocessing/filter.py +++ b/src/spikeinterface/preprocessing/filter.py @@ -47,8 +47,9 @@ class FilterRecording(BasePreprocessor): If list. band (low, high) in Hz for "bandpass" filter type btype : "bandpass" | "highpass", default: "bandpass" Type of the filter - margin_ms : float, default: 5.0 + margin_ms : float, default: None Margin in ms on border to avoid border effect. + Must be provided by sub-class. coeff : array | None, default: None Filter coefficients in the filter_mode form. dtype : dtype or None, default: None @@ -83,7 +84,7 @@ def __init__( filter_order=5, ftype="butter", filter_mode="sos", - margin_ms=5, + margin_ms=None, add_reflect_padding=False, coeff=None, dtype=None, @@ -115,6 +116,7 @@ def __init__( if "offset_to_uV" in self.get_property_keys(): self.set_channel_offsets(0) + assert margin_ms is not None, "margin_ms must be provided!" margin = int(margin_ms * fs / 1000.0) self.margin_samples = margin for parent_segment in recording._recording_segments: From 9675c31b96a0c2e1ac7c26f1bb794a4696171ec1 Mon Sep 17 00:00:00 2001 From: Alessio Buccino Date: Wed, 17 Dec 2025 11:15:33 +0100 Subject: [PATCH 19/19] Fix tests --- src/spikeinterface/preprocessing/tests/test_filter.py | 4 ++-- src/spikeinterface/preprocessing/tests/test_pipeline.py | 3 +++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/spikeinterface/preprocessing/tests/test_filter.py b/src/spikeinterface/preprocessing/tests/test_filter.py index 66889bf095..398b6cbc0e 100644 --- a/src/spikeinterface/preprocessing/tests/test_filter.py +++ b/src/spikeinterface/preprocessing/tests/test_filter.py @@ -159,7 +159,7 @@ def test_filter(): trace1 = rec2_cached1.get_traces(segment_index=0) # other filtering types - rec3 = filter(rec, band=500.0, btype="highpass", filter_mode="ba", filter_order=2) + rec3 = filter(rec, band=500.0, btype="highpass", filter_mode="ba", filter_order=2, margin_ms=5.0) rec4 = notch_filter(rec, freq=3000, q=30, margin_ms=5.0) rec5 = causal_filter(rec, direction="forward") rec6 = causal_filter(rec, direction="backward") @@ -168,7 +168,7 @@ def test_filter(): from scipy.signal import iirfilter coeff = iirfilter(8, [0.02, 0.4], rs=30, btype="band", analog=False, ftype="cheby2", output="sos") - rec5 = filter(rec, coeff=coeff, filter_mode="sos") + rec5 = filter(rec, coeff=coeff, filter_mode="sos", margin_ms=5.0) # compute by chunk rec5_cached0 = rec5.save(chunk_size=100000, verbose=False, progress_bar=True) diff --git a/src/spikeinterface/preprocessing/tests/test_pipeline.py b/src/spikeinterface/preprocessing/tests/test_pipeline.py index addcb5d172..27432bb156 100644 --- a/src/spikeinterface/preprocessing/tests/test_pipeline.py +++ b/src/spikeinterface/preprocessing/tests/test_pipeline.py @@ -80,6 +80,9 @@ def test_pipeline_equiv_to_step(): elif pp_name == "decimate": pp_dict[pp_name] = {"decimation_factor": 2} pp_rec_from_class = pp_class(rec, decimation_factor=2) + elif pp_name == "filter": + pp_dict[pp_name] = {"margin_ms": 5.0} + pp_rec_from_class = pp_class(rec, margin_ms=5.0) else: pp_rec_from_class = pp_class(rec)

      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 OimsL+tw6&r_&)&3Gy)+2 From 7e89beed3206b279bbfdd9850b92f133bda30e1a Mon Sep 17 00:00:00 2001 From: Alessio Buccino Date: Tue, 9 Dec 2025 12:11:36 +0100 Subject: [PATCH 09/19] Clean up forhowto files and add to gitignore --- .gitignore | 1 + doc/forhowto/forhowto_jupyter.zip | Bin 24771 -> 0 bytes doc/forhowto/forhowto_python.zip | Bin 18570 -> 0 bytes .../images/sphx_glr_plot_extract_lfps_001.png | Bin 27316 -> 0 bytes .../images/sphx_glr_plot_extract_lfps_002.png | Bin 30481 -> 0 bytes .../images/sphx_glr_plot_extract_lfps_003.png | Bin 20875 -> 0 bytes .../images/sphx_glr_plot_extract_lfps_004.png | Bin 69160 -> 0 bytes .../images/sphx_glr_plot_extract_lfps_005.png | Bin 27413 -> 0 bytes ...phx_glr_plot_working_with_tetrodes_001.png | Bin 18554 -> 0 bytes ...phx_glr_plot_working_with_tetrodes_002.png | Bin 41202 -> 0 bytes .../sphx_glr_plot_extract_lfps_thumb.png | Bin 23684 -> 0 bytes ...x_glr_plot_working_with_tetrodes_thumb.png | Bin 15759 -> 0 bytes doc/forhowto/index.rst | 81 - doc/forhowto/plot_extract_lfps.codeobj.json | 2637 ----------------- doc/forhowto/plot_extract_lfps.ipynb | 316 -- doc/forhowto/plot_extract_lfps.py | 313 -- doc/forhowto/plot_extract_lfps.py.md5 | 1 - doc/forhowto/plot_extract_lfps.rst | 640 ---- doc/forhowto/plot_extract_lfps.zip | Bin 30149 -> 0 bytes .../plot_working_with_tetrodes.codeobj.json | 743 ----- doc/forhowto/plot_working_with_tetrodes.ipynb | 194 -- doc/forhowto/plot_working_with_tetrodes.py | 117 - .../plot_working_with_tetrodes.py.md5 | 1 - doc/forhowto/plot_working_with_tetrodes.rst | 319 -- doc/forhowto/plot_working_with_tetrodes.zip | Bin 13192 -> 0 bytes 25 files changed, 1 insertion(+), 5362 deletions(-) delete mode 100644 doc/forhowto/forhowto_jupyter.zip delete mode 100644 doc/forhowto/forhowto_python.zip delete mode 100644 doc/forhowto/images/sphx_glr_plot_extract_lfps_001.png delete mode 100644 doc/forhowto/images/sphx_glr_plot_extract_lfps_002.png delete mode 100644 doc/forhowto/images/sphx_glr_plot_extract_lfps_003.png delete mode 100644 doc/forhowto/images/sphx_glr_plot_extract_lfps_004.png delete mode 100644 doc/forhowto/images/sphx_glr_plot_extract_lfps_005.png delete mode 100644 doc/forhowto/images/sphx_glr_plot_working_with_tetrodes_001.png delete mode 100644 doc/forhowto/images/sphx_glr_plot_working_with_tetrodes_002.png delete mode 100644 doc/forhowto/images/thumb/sphx_glr_plot_extract_lfps_thumb.png delete mode 100644 doc/forhowto/images/thumb/sphx_glr_plot_working_with_tetrodes_thumb.png delete mode 100644 doc/forhowto/index.rst delete mode 100644 doc/forhowto/plot_extract_lfps.codeobj.json delete mode 100644 doc/forhowto/plot_extract_lfps.ipynb delete mode 100644 doc/forhowto/plot_extract_lfps.py delete mode 100644 doc/forhowto/plot_extract_lfps.py.md5 delete mode 100644 doc/forhowto/plot_extract_lfps.rst delete mode 100644 doc/forhowto/plot_extract_lfps.zip delete mode 100644 doc/forhowto/plot_working_with_tetrodes.codeobj.json delete mode 100644 doc/forhowto/plot_working_with_tetrodes.ipynb delete mode 100644 doc/forhowto/plot_working_with_tetrodes.py delete mode 100644 doc/forhowto/plot_working_with_tetrodes.py.md5 delete mode 100644 doc/forhowto/plot_working_with_tetrodes.rst delete mode 100644 doc/forhowto/plot_working_with_tetrodes.zip diff --git a/.gitignore b/.gitignore index 9c4dda937c..6a7edf06f8 100644 --- a/.gitignore +++ b/.gitignore @@ -116,6 +116,7 @@ examples/tutorials/*.svg doc/_build/* doc/tutorials/* +doc/forhowto/* doc/sources/* *sg_execution_times.rst diff --git a/doc/forhowto/forhowto_jupyter.zip b/doc/forhowto/forhowto_jupyter.zip deleted file mode 100644 index 0b5b72a00dcc73bb2e7d01e9e6c4fdb83805d805..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24771 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 diff --git a/doc/forhowto/forhowto_python.zip b/doc/forhowto/forhowto_python.zip deleted file mode 100644 index 565bd3c131520f941ef15eeff640390ccabede07..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18570 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 diff --git a/doc/forhowto/images/sphx_glr_plot_extract_lfps_002.png b/doc/forhowto/images/sphx_glr_plot_extract_lfps_002.png deleted file mode 100644 index 61a76d69ae0eed0eda4bf493e52b5ee10ab75451..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30481 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 U^36;YQSd*_{W|-esG48-UqjaE-2eap diff --git a/doc/forhowto/images/sphx_glr_plot_extract_lfps_005.png b/doc/forhowto/images/sphx_glr_plot_extract_lfps_005.png deleted file mode 100644 index ece26c77fb7db1c33c64c3d71bec142738d35a45..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27413 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 diff --git a/doc/forhowto/images/sphx_glr_plot_working_with_tetrodes_002.png b/doc/forhowto/images/sphx_glr_plot_working_with_tetrodes_002.png deleted file mode 100644 index bff0a6fb886c1c830b3af3ad2c2844b5a8e47e5a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41202 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 wvk{vZzYh)m5%}+4|Bp8@{O$kV@-wa@2{ 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 bM-&_LK0QtUFdT5u8bLuuS-MKn_~U;AdXtVO diff --git a/doc/forhowto/index.rst b/doc/forhowto/index.rst deleted file mode 100644 index 0b92242996..0000000000 --- a/doc/forhowto/index.rst +++ /dev/null @@ -1,81 +0,0 @@ -:orphan: - -For how to ----------- - -These documents are files which we would like sphinx-gallery to run, but are linked by the how to guide. - - - -.. raw:: html - -