Skip to content

Instantly share code, notes, and snippets.

@mhhennig
Last active August 1, 2024 09:06
Show Gist options
  • Save mhhennig/4c391b2e2c8b338d573fc951b1950b5d to your computer and use it in GitHub Desktop.
Save mhhennig/4c391b2e2c8b338d573fc951b1950b5d to your computer and use it in GitHub Desktop.
Comparison of HS detection methods
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"# %load_ext autoreload\n",
"# %autoreload 2\n",
"import os, sys\n",
"sys.path.insert(0,\"../\")\n",
"sys.path.insert(0,\"../../spikeinterface/src\")\n",
"sys.path.insert(0,\"../../spikeinterface/spikeinterface/src\")\n",
"\n",
"os.environ[\"OMP_DISPLAY_ENV\"] = \"true\"\n",
"os.environ[\"KMP_VERSION\"] = \"true\"\n",
"\n",
"import spikeinterface.full as si\n",
"import herdingspikes as hs\n",
"import numpy as np\n",
"from matplotlib import pyplot as plt\n",
"si.set_global_job_kwargs(n_jobs=-1, progress_bar=False, chunk_duration=\"1s\")"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"rec_name = \"simulated_short_recording\"\n",
"\n",
"if not os.path.exists(rec_name):\n",
" num_units = 20\n",
" rec, _, gt_sorting = si.generate_drifting_recording(\n",
" num_units=num_units,\n",
" duration=100.0,\n",
" sampling_frequency=20000.0,\n",
" generate_probe_kwargs=dict(\n",
" num_columns=8,\n",
" num_contact_per_column=[8] * 8,\n",
" xpitch=42,\n",
" ypitch=42,\n",
" contact_shapes=\"square\",\n",
" contact_shape_params={\"width\": 42},\n",
" ),\n",
" generate_templates_kwargs=dict(\n",
" ms_before=1.5,\n",
" ms_after=3.0,\n",
" mode=\"ellipsoid\",\n",
" unit_params=dict(\n",
" alpha=(150.0, 500.0),\n",
" spatial_decay=(10, 45),\n",
" ),\n",
" ),\n",
" generate_unit_locations_kwargs=dict(\n",
" margin_um=10.0,\n",
" minimum_z=6.0,\n",
" maximum_z=25.0,\n",
" minimum_distance=12.0,\n",
" max_iteration=100,\n",
" distance_strict=False,\n",
" ),\n",
" generate_sorting_kwargs=dict(\n",
" # firing_rates=(1.0, 4.0),\n",
" firing_rates=(1.0, 10.0),\n",
" refractory_period_ms=4.0,\n",
" ),\n",
" generate_noise_kwargs=dict(noise_levels=(4.0, 10.0), spatial_decay=25.0),\n",
" seed=42,\n",
" )\n",
" rec.save_to_folder(rec_name, folder=rec_name, overwrite=True)\n",
"\n",
"rec = si.load_extractor(rec_name)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Parameters for legacy"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"params_legacy = {\n",
" # core params\n",
" \"clustering_bandwidth\": 5.5,\n",
" \"clustering_alpha\": 5.5,\n",
" \"clustering_n_jobs\": -1,\n",
" \"clustering_bin_seeding\": True,\n",
" \"clustering_min_bin_freq\": 16,\n",
" \"clustering_subset\": None,\n",
" \"left_cutout_time\": 0.3,\n",
" \"right_cutout_time\": 1.8,\n",
" \"detect_threshold\": 8,\n",
" # extra probe params\n",
" \"probe_masked_channels\": [],\n",
" \"probe_inner_radius\": 70,\n",
" \"probe_neighbor_radius\": 90,\n",
" \"probe_event_length\": 0.26,\n",
" \"probe_peak_jitter\": 0.25,\n",
" # extra detection params\n",
" \"t_inc\": 100000,\n",
" \"num_com_centers\": 1,\n",
" \"maa\": 4.0,\n",
" \"ahpthr\": 0.0, # this is not working correctly\n",
" \"out_file_name\": \"HS2_detected\",\n",
" \"decay_filtering\": False,\n",
" \"save_all\": False,\n",
" \"amp_evaluation_time\": 0.4,\n",
" \"spk_evaluation_time\": 1.0,\n",
" # extra pca params\n",
" \"pca_ncomponents\": 2,\n",
" \"pca_whiten\": True,\n",
" # remove duplicates (based on spk_evaluation_time)\n",
" \"filter_duplicates\": True,\n",
"}"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Equivalent parameters for Lightning"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"params_lightning = {\n",
" \"chunk_size\": 500000,\n",
" \"rescale\": True,\n",
" \"lowpass\": False,\n",
" \"rescale_value\": -1280.0,\n",
" \"common_reference\": \"average\",\n",
" \"spike_duration\": 1.0,\n",
" \"amp_avg_duration\": 0.4,\n",
" \"threshold\": 8.0,\n",
" \"min_avg_amp\": 1.0, # = maa/4\n",
" \"AHP_thr\": 0.0,\n",
" \"neighbor_radius\": 90.0,\n",
" \"inner_radius\": 70.0,\n",
" \"peak_jitter\": 0.25,\n",
" \"rise_duration\": 0.26,\n",
" \"decay_filtering\": False,\n",
" \"decay_ratio\": 1.0,\n",
" \"localize\": True,\n",
" \"save_shape\": True,\n",
" \"out_file\": \"HS2_detected\",\n",
" \"left_cutout_time\": 0.3,\n",
" \"right_cutout_time\": 1.8,\n",
" \"verbose\": True,\n",
" \"clustering_bandwidth\": 4.0,\n",
" \"clustering_alpha\": 4.5,\n",
" \"clustering_n_jobs\": -1,\n",
" \"clustering_bin_seeding\": True,\n",
" \"clustering_min_bin_freq\": 4,\n",
" \"clustering_subset\": None,\n",
" \"pca_ncomponents\": 2,\n",
" \"pca_whiten\": True,\n",
"}\n"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"# Generating new position and neighbor files from data file\n",
"# Not Masking any Channels\n",
"# Sampling rate: 20000\n",
"# Localization On\n",
"# Number of recorded channels: 64\n",
"# Analysing frames: 2000000; Seconds: 100.0\n",
"# Frames before spike in cutout: 6\n",
"# Frames after spike in cutout: 36\n",
"# tcuts: 26 56\n",
"# tInc: 100000\n",
"# Detection completed, time taken: 0:00:02.856515\n",
"# Time per frame: 0:00:00.001428\n",
"# Time per sample: 0:00:00.000022\n",
"Loaded 10692 spikes.\n"
]
}
],
"source": [
"# run legacy\n",
"recf = si.normalize_by_quantile(\n",
" recording=rec, scale=20., median=0.0, q1=0.025, q2=0.975\n",
" )\n",
"probe = hs.probe.RecordingExtractor(recf, \n",
" masked_channels=params_legacy[\"probe_masked_channels\"],\n",
" inner_radius=params_legacy[\"probe_inner_radius\"],\n",
" neighbor_radius=params_legacy[\"probe_neighbor_radius\"],\n",
" event_length=params_legacy[\"probe_event_length\"],\n",
" peak_jitter=params_legacy[\"probe_peak_jitter\"],\n",
" )\n",
"# probe.show(figwidth=2)\n",
"sorter_output_folder = 'HS2_results_leagcy'\n",
"det = hs.HSDetection(probe,\n",
" file_directory_name=str(sorter_output_folder),\n",
" left_cutout_time=params_legacy[\"left_cutout_time\"],\n",
" right_cutout_time=params_legacy[\"right_cutout_time\"],\n",
" threshold=params_legacy[\"detect_threshold\"],\n",
" to_localize=True,\n",
" num_com_centers=params_legacy[\"num_com_centers\"],\n",
" maa=params_legacy[\"maa\"],\n",
" ahpthr=params_legacy[\"ahpthr\"],\n",
" out_file_name=params_legacy[\"out_file_name\"],\n",
" decay_filtering=params_legacy[\"decay_filtering\"],\n",
" save_all=params_legacy[\"save_all\"],\n",
" amp_evaluation_time=params_legacy[\"amp_evaluation_time\"],\n",
" spk_evaluation_time=params_legacy[\"spk_evaluation_time\"],)\n",
"\n",
"det.DetectFromRaw(load=True)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"HSDetection: Analysing segment 0, frames from 0 to 500000 (0.0%)\n",
"HSDetection: Analysing segment 0, frames from 500000 to 1000000 (25.0%)\n",
"HSDetection: Analysing segment 0, frames from 1000000 to 1500000 (50.0%)\n",
"HSDetection: Analysing segment 0, frames from 1500000 to 2000000 (75.0%)\n",
"writing spikes to HS2_detected.hdf5\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"LLVM OMP version: 5.0.20140926\n",
"LLVM OMP library type: performance\n",
"LLVM OMP link type: dynamic\n",
"LLVM OMP build time: no_timestamp\n",
"LLVM OMP build compiler: Clang 12.0\n",
"LLVM OMP alternative compiler support: yes\n",
"LLVM OMP API version: 5.0 (201611)\n",
"LLVM OMP dynamic error checking: no\n",
"LLVM OMP thread affinity support: no\n",
"\n",
"OPENMP DISPLAY ENVIRONMENT BEGIN\n",
" _OPENMP='201611'\n",
" [host] OMP_AFFINITY_FORMAT='OMP: pid %P tid %i thread %n bound to OS proc set {%A}'\n",
" [host] OMP_ALLOCATOR='omp_default_mem_alloc'\n",
" [host] OMP_CANCELLATION='FALSE'\n",
" [host] OMP_DEFAULT_DEVICE='0'\n",
" [host] OMP_DISPLAY_AFFINITY='FALSE'\n",
" [host] OMP_DISPLAY_ENV='TRUE'\n",
" [host] OMP_DYNAMIC='FALSE'\n",
" [host] OMP_MAX_ACTIVE_LEVELS='1'\n",
" [host] OMP_MAX_TASK_PRIORITY='0'\n",
" [host] OMP_NESTED: deprecated; max-active-levels-var=1\n",
" [host] OMP_NUM_TEAMS='0'\n",
" [host] OMP_NUM_THREADS: value is not defined\n",
" [host] OMP_PROC_BIND='false'\n",
" [host] OMP_SCHEDULE='static'\n",
" [host] OMP_STACKSIZE='8176k'\n",
" [host] OMP_TARGET_OFFLOAD=DEFAULT\n",
" [host] OMP_TEAMS_THREAD_LIMIT='0'\n",
" [host] OMP_THREAD_LIMIT='2147483647'\n",
" [host] OMP_TOOL='enabled'\n",
" [host] OMP_TOOL_LIBRARIES: value is not defined\n",
" [host] OMP_TOOL_VERBOSE_INIT: value is not defined\n",
" [host] OMP_WAIT_POLICY='PASSIVE'\n",
"OPENMP DISPLAY ENVIRONMENT END\n",
"\n",
"\n"
]
}
],
"source": [
"det_lightning = hs.HSDetectionLightning(rec, params_lightning)\n",
"spikes = det_lightning.DetectFromRaw()"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Number of spikes found by legacy:10692\n",
"Number of spikes found by lightning:10092\n"
]
}
],
"source": [
"print(f\"Number of spikes found by legacy:{det.spikes.t.values.shape[0]}\")\n",
"print(f\"Number of spikes found by lightning:{det_lightning.spikes.t.values.shape[0]}\")\n"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Text(0.5, 1.0, 'lightning')"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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tFSx9p4/f148cOCAeODAARGA+NOf/lQ8cOCAaLFYRFF0lxM1mUzijh07xPb2dnHp0qUBy4nOnj1b/OCDD8R3331XvPbaa+NSknO4tp8/f15cvXq1uH//fvHYsWPiH/7wB/ErX/mKeO2114oDAwOKt10URbG6ulrMysoSm5ubvUpufvnll/I2I31epLKWixYtEtva2sQ333xTnDBhQszLWo7U9k8//VR88sknxT/96U/isWPHxB07dohXX321OH/+fMXbLoqiuGbNGnHv3r3isWPHxPb2dnHNmjWiIAjiW2+9JYqievc7qYtW4pIoMjYxNoVGy3EplPYzNsUXk58oePbZZ8WrrrpKTE1NFefMmSO2tLQo3SQ/d911lzh58mQxNTVVzMvLE++66y7x008/le+32+3iP/zDP4jZ2dniZZddJn7jG98QP//8c8Xa+84774gA/H5WrFghiqK7pOiGDRvESZMmiWlpaeKtt94qdnZ2ej3HmTNnxOXLl4tjxowRMzMzxfvvv188f/68om3/8ssvxUWLFokTJkwQDQaDaDabxQcffNDvpESptouiGLDtAMQXXnhB3iaUz8vx48fFJUuWiEajUbz88svFxx57THQ4HIq2/cSJE+L8+fPFcePGiWlpaeI111wj/uAHP/BaS0GptouiKP7v//2/RbPZLKampooTJkwQb731Vjm4iKJ69zupjxbikigyNjE2hUbLcSmU9jM2xZcgiqIY/f4kIiIiIiIideGcHyIiIiIiSgpMfoiIiIiIKCkw+SEiIiIioqTA5IeIiIiIiJICkx8iIiIiIkoKTH6IiIiIiCgpMPkhIiIiIqKkwOSHiIiIiIiSApMfIiIiIiJKCkx+iIiIiIgoKTD5ISIiIiKipMDkh4iIiIiIksL/B+rxqbeaIz76AAAAAElFTkSuQmCC",
"text/plain": [
"<Figure size 1000x400 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.figure(figsize=(10,4))\n",
"ax = plt.subplot(121)\n",
"det.PlotAll(s=1, ax=ax)\n",
"plt.axis('equal')\n",
"plt.title('legacy')\n",
"ax = plt.subplot(122)\n",
"det_lightning.PlotAll(s=1, ax=ax)\n",
"plt.axis(\"equal\")\n",
"plt.title(\"lightning\")\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "hs2",
"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.12.4"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment