diff --git a/CHANGELOG.md b/CHANGELOG.md index 78b882663..dc991e655 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -28,7 +28,6 @@ - Spike sorting: - Add SpikeSorting V1 pipeline. #651 - Move modules into spikesorting.v0 #807 - - Add MUA analysis to spike sorting pipeline - LFP: - Minor fixes to LFPBandV1 populator and `make`. #706, #795 - LFPV1: Fix error for multiple lfp settings on same data #775 @@ -41,7 +40,7 @@ - DLC path handling from config, and normalize naming convention. #722 - Fix in place column bug #752 - Decoding: - - Add `decoding` pipeline V1. #731, #769 + - Add `decoding` pipeline V1. #731, #769, #819 - Add a table to store the decoding results #731 - Use the new `non_local_detector` package for decoding #731 - Allow multiple spike waveform features for clusterless decoding #731 @@ -51,6 +50,10 @@ - Rename SortedSpikesGroup.SortGroup to SortedSpikesGroup.Units #807 - Change methods with load\_... to fetch\_... for consistency #807 - Use merge table methods to access part methods #807 +- MUA + - Add MUA pipeline V1. #731, #819 +- Ripple + - Add figurl to Ripple pipeline #819 ## [0.4.3] (November 7, 2023) diff --git a/README.md b/README.md index c627581ff..2241868e1 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,8 @@ visualization, and sharing of neuroscience data to support reproducible research. It is designed to be interoperable with the NWB format and integrates open-source tools into a coherent framework. +Try out a demo [here](https://spyglass.hhmi.2i2c.cloud/hub/user-redirect/git-pull?repo=https%3A%2F%2Fgithub.com%2FLorenFrankLab%2Fspyglass-demo&urlpath=lab%2Ftree%2Fspyglass-demo%2Fnotebooks%2F01_Insert_Data.ipynb&branch=main)! + Features of Spyglass include: - **Standardized data storage** - Spyglass uses the open-source @@ -86,3 +88,5 @@ a data analysis framework for reproducible and shareable neuroscience research. [10.1101/2024.01.25.577295](https://doi.org/10.1101/2024.01.25.577295 ). *\* Equal contribution* + +See paper related code [here](https://github.com/LorenFrankLab/spyglass-paper). diff --git a/notebooks/43_Decoding_SortedSpikes.ipynb b/notebooks/43_Decoding_SortedSpikes.ipynb index dc0cc9b61..23e1888fe 100644 --- a/notebooks/43_Decoding_SortedSpikes.ipynb +++ b/notebooks/43_Decoding_SortedSpikes.ipynb @@ -655,7 +655,7 @@ ], "source": [ "# look at the sorting within the group we just made\n", - "SortedSpikesGroup.SortGroup & {\n", + "SortedSpikesGroup.Units & {\n", " \"nwb_file_name\": nwb_copy_file_name,\n", " \"sorted_spikes_group_name\": \"test_group\",\n", " \"unit_filter_params_name\": unit_filter_params_name,\n", diff --git a/notebooks/51_MUA_Detection.ipynb b/notebooks/51_MUA_Detection.ipynb index e8e51f66d..5d7f9a061 100644 --- a/notebooks/51_MUA_Detection.ipynb +++ b/notebooks/51_MUA_Detection.ipynb @@ -4,23 +4,25 @@ "cell_type": "code", "execution_count": 1, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[2024-02-07 14:44:16,324][INFO]: Connecting edeno@lmf-db.cin.ucsf.edu:3306\n", + "[2024-02-07 14:44:16,357][INFO]: Connected edeno@lmf-db.cin.ucsf.edu:3306\n" + ] + } + ], "source": [ - "from pathlib import Path\n", "import datajoint as dj\n", + "from pathlib import Path\n", "\n", "dj.config.load(\n", " Path(\"../dj_local_conf.json\").absolute()\n", - ") # load config for database connection info" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# MUA Analysis and Detection\n", + ") # load config for database connection info\n", "\n", - "NOTE: This notebook is a work in progress. It is not yet complete and may contain errors." + "from spyglass.mua.v1.mua import MuaEventsV1, MuaEventsParameters" ] }, { @@ -28,38 +30,27 @@ "execution_count": 2, "metadata": {}, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "[2024-01-29 13:51:25,319][INFO]: Connecting root@localhost:3306\n", - "[2024-01-29 13:51:25,405][INFO]: Connected root@localhost:3306\n", - "[13:51:26][WARNING] Spyglass: Please update position_tools to >= 0.1.0\n" - ] - }, { "data": { "text/html": [ "\n", " \n", " \n", " \n", - " \n", + " \n", "
\n", - " \n", + "
\n", " \n", - " \n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", + " \n", + "\n", "
\n", - "

sorting_id

\n", - " \n", - "
\n", - "

merge_id

\n", - " \n", - "
\n", - "

recording_id

\n", - " \n", - "
\n", - "

sorter

\n", - " \n", - "
\n", - "

sorter_param_name

\n", - " \n", - "
\n", - "

nwb_file_name

\n", - " name of the NWB file\n", - "
\n", - "

interval_list_name

\n", - " descriptive name of this interval list\n", + "

mua_param_name

\n", + " a name for this set of parameters\n", "
\n", - "

curation_id

\n", - " \n", + "

mua_param_dict

\n", + " dictionary of parameters\n", "
08a302b6-5505-40fa-b4d5-62162f8eef58485a4ddf-332d-35b5-3ad4-0561736c1844449b64e3-db0b-437e-a1b9-0d29928aa2ddclusterless_thresholderdefault_clusterlessmediumnwb20230802_.nwb45f6b9a1-eef3-46eb-866d-d0999afebda60
0ca508ee-af4c-4a89-8181-d48bd209bfd46acb99b8-6a0c-eb83-1141-5f603c5895e0328da21c-1d9c-41e2-9800-76b3484b707bclusterless_thresholderdefault_clusterlessmediumnwb20230802_.nwb686d9951-1c0f-4d5e-9f5c-09e6fd8bdd4c0
209dc048-6fae-4315-b293-c06fff29f947f7237e18-4e73-4aee-805b-90735e9147deaff78f2f-2ba0-412a-95cc-447c3a2f4683clusterless_thresholderdefault_clusterlessmediumnwb20230802_.nwb719e8a86-fcf1-4ffc-8c1f-ea912f67ad5d0
21a9a593-f6f3-4b82-99d7-8fc46556eff37e3fa66e-727e-1541-819a-b01309bb30ae2402805a-04f9-4a88-9ccf-071376c8de19clusterless_thresholderdefault_clusterlessmediumnwb20230802_.nwbd581b117-160e-4311-b096-7781a4de43940
406a20e3-5a9f-4fec-b046-a6561f72461e6d039a63-17ad-0b78-4b1e-f02d5f3dbbc5f1427e00-2974-4301-b2ac-b4dc29277c51clusterless_thresholderdefault_clusterlessmediumnwb20230802_.nwb0e848c38-9105-4ea4-b6ba-dbdd5b46a0880
4131c51b-c56d-41fa-b046-46635fc17fd9e0e9133a-7a4e-1321-a43a-e8afcb2f25da9e332d82-1daf-4e92-bb50-12e4f9430875clusterless_thresholderdefault_clusterlessmediumnwb20230802_.nwb9ed11db5-c42e-491a-8caf-7d9a37a65f130
4c5a629a-71d9-481d-ab11-a4cb0fc160879959b614-2318-f597-6651-a3a82124d28a3a2c3eed-413a-452a-83c8-0e4648141bdeclusterless_thresholderdefault_clusterlessmediumnwb20230802_.nwb2b9fbf14-74a0-4294-a805-26702340aac90
4d629c07-1931-4e1f-a3a8-cbf1b72161e3c0eb6455-fc41-c200-b62e-e3ca81b9a3f7f07bc0b0-de6b-4424-8ef9-766213aaca26clusterless_thresholderdefault_clusterlessmediumnwb20230802_.nwb5c68f0f0-f577-4905-8a09-e4d171d0a22d0
554a9a3c-0461-48be-8435-123eed59c228912e250e-56d8-ee33-4525-c844d810971b7f128981-6868-4976-ba20-248655dcac21clusterless_thresholderdefault_clusterlessmediumnwb20230802_.nwbf4b9301f-bc91-455b-9474-c801093f38560
7bb007f2-26d3-463f-b7dc-7bd4d271725ed7d2c97a-0e6e-d1b8-735c-d55dc66a30e1a9b7cec0-1256-49cf-abf0-8c45fd155379clusterless_thresholderdefault_clusterlessmediumnwb20230802_.nwb74270cba-36ee-4afb-ab50-2a6cc948e68c0
80e1f37f-48a7-4087-bd37-7a37b6a2c160abb92dce-4410-8f17-a501-a4104bda0dcf3c40ebdc-0b61-4105-9971-e1348bd49bc7clusterless_thresholderdefault_clusterlessmediumnwb20230802_.nwb0f91197e-bebb-4dc6-ad41-5bf89c3eed280
8848c4a8-a2f2-4f3d-82cd-51b13b8bae3c74e10781-1228-4075-0870-af224024ffdc257c077b-8f3b-4abb-a631-6b8084d6a1eaclusterless_thresholderdefault_clusterlessmediumnwb20230802_.nwbe289e03d-32ad-461a-a1cc-c885373431490
default=BLOB=
\n", - "

...

\n", - "

Total: 23

\n", + " \n", + "

Total: 1

\n", " " ], "text/plain": [ - "*sorting_id *merge_id recording_id sorter sorter_param_n nwb_file_name interval_list_ curation_id \n", - "+------------+ +------------+ +------------+ +------------+ +------------+ +------------+ +------------+ +------------+\n", - "08a302b6-5505- 485a4ddf-332d- 449b64e3-db0b- clusterless_th default_cluste mediumnwb20230 45f6b9a1-eef3- 0 \n", - "0ca508ee-af4c- 6acb99b8-6a0c- 328da21c-1d9c- clusterless_th default_cluste mediumnwb20230 686d9951-1c0f- 0 \n", - "209dc048-6fae- f7237e18-4e73- aff78f2f-2ba0- clusterless_th default_cluste mediumnwb20230 719e8a86-fcf1- 0 \n", - "21a9a593-f6f3- 7e3fa66e-727e- 2402805a-04f9- clusterless_th default_cluste mediumnwb20230 d581b117-160e- 0 \n", - "406a20e3-5a9f- 6d039a63-17ad- f1427e00-2974- clusterless_th default_cluste mediumnwb20230 0e848c38-9105- 0 \n", - "4131c51b-c56d- e0e9133a-7a4e- 9e332d82-1daf- clusterless_th default_cluste mediumnwb20230 9ed11db5-c42e- 0 \n", - "4c5a629a-71d9- 9959b614-2318- 3a2c3eed-413a- clusterless_th default_cluste mediumnwb20230 2b9fbf14-74a0- 0 \n", - "4d629c07-1931- c0eb6455-fc41- f07bc0b0-de6b- clusterless_th default_cluste mediumnwb20230 5c68f0f0-f577- 0 \n", - "554a9a3c-0461- 912e250e-56d8- 7f128981-6868- clusterless_th default_cluste mediumnwb20230 f4b9301f-bc91- 0 \n", - "7bb007f2-26d3- d7d2c97a-0e6e- a9b7cec0-1256- clusterless_th default_cluste mediumnwb20230 74270cba-36ee- 0 \n", - "80e1f37f-48a7- abb92dce-4410- 3c40ebdc-0b61- clusterless_th default_cluste mediumnwb20230 0f91197e-bebb- 0 \n", - "8848c4a8-a2f2- 74e10781-1228- 257c077b-8f3b- clusterless_th default_cluste mediumnwb20230 e289e03d-32ad- 0 \n", - " ...\n", - " (Total: 23)" + "*mua_param_nam mua_param_\n", + "+------------+ +--------+\n", + "default =BLOB= \n", + " (Total: 1)" ] }, "execution_count": 2, @@ -235,71 +113,13 @@ } ], "source": [ - "from spyglass.spikesorting.spikesorting_merge import SpikeSortingOutput\n", - "import spyglass.spikesorting.v1 as sgs\n", - "\n", - "\n", - "nwb_copy_file_name = \"mediumnwb20230802_.nwb\"\n", - "\n", - "sorter_keys = {\n", - " \"nwb_file_name\": nwb_copy_file_name,\n", - " \"sorter\": \"clusterless_thresholder\",\n", - " \"sorter_param_name\": \"default_clusterless\",\n", - "}\n", - "\n", - "(sgs.SpikeSortingSelection & sorter_keys) * SpikeSortingOutput.CurationV1" + "MuaEventsParameters()" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([UUID('485a4ddf-332d-35b5-3ad4-0561736c1844'),\n", - " UUID('6acb99b8-6a0c-eb83-1141-5f603c5895e0'),\n", - " UUID('f7237e18-4e73-4aee-805b-90735e9147de'),\n", - " UUID('7e3fa66e-727e-1541-819a-b01309bb30ae'),\n", - " UUID('6d039a63-17ad-0b78-4b1e-f02d5f3dbbc5'),\n", - " UUID('e0e9133a-7a4e-1321-a43a-e8afcb2f25da'),\n", - " UUID('9959b614-2318-f597-6651-a3a82124d28a'),\n", - " UUID('c0eb6455-fc41-c200-b62e-e3ca81b9a3f7'),\n", - " UUID('912e250e-56d8-ee33-4525-c844d810971b'),\n", - " UUID('d7d2c97a-0e6e-d1b8-735c-d55dc66a30e1'),\n", - " UUID('abb92dce-4410-8f17-a501-a4104bda0dcf'),\n", - " UUID('74e10781-1228-4075-0870-af224024ffdc'),\n", - " UUID('8bbddc0f-d6ae-6260-9400-f884a6e25ae8'),\n", - " UUID('614d796c-0b95-6364-aaa0-b6cb1e7bbb83'),\n", - " UUID('b332482b-e430-169d-8ac0-0a73ce968ed7'),\n", - " UUID('86897349-ff68-ac72-02eb-739dd88936e6'),\n", - " UUID('4a712103-c223-864f-82e0-6c23de79cc14'),\n", - " UUID('cf858380-e8a3-49de-c2a9-1a277e307a68'),\n", - " UUID('cc4ee561-f974-f8e5-0ea4-83185263ac67'),\n", - " UUID('4a72c253-b3ca-8c13-e615-736a7ebff35c'),\n", - " UUID('b92a94d8-ee1e-2097-a81f-5c1e1556ed24'),\n", - " UUID('5c53bd33-d57c-fbba-e0fb-55e0bcb85d03'),\n", - " UUID('0751a1e1-a406-7f87-ae6f-ce4ffc60621c')], dtype=object)" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "spikesorting_merge_ids = (\n", - " (sgs.SpikeSortingSelection & sorter_keys) * SpikeSortingOutput.CurationV1\n", - ").fetch(\"merge_id\")\n", - "\n", - "spikesorting_merge_ids" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, "outputs": [ { "data": { @@ -307,23 +127,21 @@ "\n", " \n", " \n", - " \n", - " \n", - "
\n", - " \n", - " \n", - " \n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "
\n", - "

merge_id

\n", - " \n", - "
\n", - "

spikesorting_merge_id

\n", - " \n", - "
\n", - "

unit_group_name

\n", - " Name of unit group\n", - "
39b22078-84fa-d3aa-8ca9-2368603d6a470751a1e1-a406-7f87-ae6f-ce4ffc60621call units
7bc69ef8-ae89-f30f-c236-56a87a49ed63485a4ddf-332d-35b5-3ad4-0561736c1844all units
2f6295c6-ad14-dde0-6b14-ee29bc2ed8494a712103-c223-864f-82e0-6c23de79cc14all units
7fa3c0ad-36a8-c14c-d84a-890c6002a4574a72c253-b3ca-8c13-e615-736a7ebff35call units
4b025478-ab06-8e65-ef09-7e32be5a624c5c53bd33-d57c-fbba-e0fb-55e0bcb85d03all units
9658d944-1f1f-d467-1f56-bcc32d63e6e8614d796c-0b95-6364-aaa0-b6cb1e7bbb83all units
76cb7574-a687-37c9-1045-8e4e5d13a0b06acb99b8-6a0c-eb83-1141-5f603c5895e0all units
87af74fa-a77e-f29b-99f7-f5720aa4816f6d039a63-17ad-0b78-4b1e-f02d5f3dbbc5all units
3cccfce5-dad9-61c5-7eee-1c708183710074e10781-1228-4075-0870-af224024ffdcall units
bbddf25f-d810-f586-e3b8-cb96350fbbde7e3fa66e-727e-1541-819a-b01309bb30aeall units
7887e5db-da1d-d261-d58a-a5175759396586897349-ff68-ac72-02eb-739dd88936e6all units
1b7ba376-89f9-e0ac-9104-fbd1bd984e418bbddc0f-d6ae-6260-9400-f884a6e25ae8all units
\n", - "

...

\n", - "

Total: 23

\n", - " " - ], "text/plain": [ - "*merge_id spikesorting_m unit_group_nam\n", - "+------------+ +------------+ +------------+\n", - "39b22078-84fa- 0751a1e1-a406- all units \n", - "7bc69ef8-ae89- 485a4ddf-332d- all units \n", - "2f6295c6-ad14- 4a712103-c223- all units \n", - "7fa3c0ad-36a8- 4a72c253-b3ca- all units \n", - "4b025478-ab06- 5c53bd33-d57c- all units \n", - "9658d944-1f1f- 614d796c-0b95- all units \n", - "76cb7574-a687- 6acb99b8-6a0c- all units \n", - "87af74fa-a77e- 6d039a63-17ad- all units \n", - "3cccfce5-dad9- 74e10781-1228- all units \n", - "bbddf25f-d810- 7e3fa66e-727e- all units \n", - "7887e5db-da1d- 86897349-ff68- all units \n", - "1b7ba376-89f9- 8bbddc0f-d6ae- all units \n", - " ...\n", - " (Total: 23)" + "UUID('4eb59a18-045a-5768-d12e-b6473415ae1c')" ] }, - "execution_count": 5, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "from spyglass.spikesorting.unit_inclusion_merge import (\n", - " ImportedUnitInclusionV1,\n", - " UnitInclusionOutput,\n", - ")\n", + "from spyglass.position import PositionOutput\n", "\n", - "ImportedUnitInclusionV1().insert_all_units(spikesorting_merge_ids)\n", + "nwb_copy_file_name = \"mediumnwb20230802_.nwb\"\n", + "\n", + "trodes_s_key = {\n", + " \"nwb_file_name\": nwb_copy_file_name,\n", + " \"interval_list_name\": \"pos 0 valid times\",\n", + " \"trodes_pos_params_name\": \"single_led_upsampled\",\n", + "}\n", "\n", - "UnitInclusionOutput.ImportedUnitInclusionV1() & [\n", - " {\"spikesorting_merge_id\": id} for id in spikesorting_merge_ids\n", - "]" + "pos_merge_id = (PositionOutput.TrodesPosV1 & trodes_s_key).fetch1(\"merge_id\")\n", + "pos_merge_id" ] }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 5, "metadata": {}, "outputs": [ { @@ -587,23 +273,21 @@ "\n", " \n", " \n", - " \n", - " \n", - "
\n", - " \n", - " \n", - " \n", - "\n", - "
\n", - "

mua_param_name

\n", - " a name for this set of parameters\n", - "
\n", - "

mua_param_dict

\n", - " dictionary of parameters\n", - "
default=BLOB=
\n", - " \n", - "

Total: 1

\n", - " " - ], "text/plain": [ - "*mua_param_nam mua_param_\n", - "+------------+ +--------+\n", - "default =BLOB= \n", - " (Total: 1)" + "'https://figurl.org/f?v=gs://figurl/spikesortingview-10&d=sha1://08d7c35434e8469686fca8aff3ec9319bccb44f9&label=Multiunit%20Detection&zone=franklab.default'" ] }, - "execution_count": 12, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "from spyglass.mua.v1.mua import MuaEventsParameters, MuaEventsV1\n", - "\n", - "MuaEventsParameters().insert_default()\n", - "MuaEventsParameters()" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "[13:51:59][WARNING] Spyglass: Upsampled position data, frame indices are invalid. Setting add_frame_ind=False\n", - "[2024-01-29 13:52:00,002][WARNING]: Skipped checksum for file with hash: 0cd40383-03e0-44ec-5dac-36c66063796a, and path: /Users/edeno/Documents/GitHub/spyglass/DATA/analysis/mediumnwb20230802/mediumnwb20230802_FUSH604NQA.nwb\n", - "[2024-01-29 13:52:00,421][WARNING]: Skipped checksum for file with hash: 148d9058-e6dc-e959-4c4d-75db9aa0b6e4, and path: /Users/edeno/Documents/GitHub/spyglass/DATA/analysis/mediumnwb20230802/mediumnwb20230802_EF6N6XI3AH.nwb\n", - "[2024-01-29 13:52:00,785][WARNING]: Skipped checksum for file with hash: b4b6404f-aaf8-c4cc-9abe-ceea56e103f3, and path: /Users/edeno/Documents/GitHub/spyglass/DATA/analysis/mediumnwb20230802/mediumnwb20230802_O7ZZ0F1XN7.nwb\n", - "[2024-01-29 13:52:01,131][WARNING]: Skipped checksum for file with hash: 4357905c-c6b9-3990-4d62-740a54cfc667, and path: /Users/edeno/Documents/GitHub/spyglass/DATA/analysis/mediumnwb20230802/mediumnwb20230802_X84BYVM2B0.nwb\n", - "[2024-01-29 13:52:01,498][WARNING]: Skipped checksum for file with hash: ff81d274-17f7-702d-a2b4-92ac43c29316, and path: /Users/edeno/Documents/GitHub/spyglass/DATA/analysis/mediumnwb20230802/mediumnwb20230802_Y2YF504C5D.nwb\n", - "[2024-01-29 13:52:01,888][WARNING]: Skipped checksum for file with hash: 8993754e-7dbe-94a1-403d-8c55aa9c6c42, and path: /Users/edeno/Documents/GitHub/spyglass/DATA/analysis/mediumnwb20230802/mediumnwb20230802_JN4A4GSLZB.nwb\n", - "[2024-01-29 13:52:02,230][WARNING]: Skipped checksum for file with hash: 7d05460d-7366-27c9-2ba7-de2ad5d402f2, and path: /Users/edeno/Documents/GitHub/spyglass/DATA/analysis/mediumnwb20230802/mediumnwb20230802_4JXWFJ3JRI.nwb\n", - "[2024-01-29 13:52:02,608][WARNING]: Skipped checksum for file with hash: 6629fd95-636a-4ad4-c9af-cee507de2130, and path: /Users/edeno/Documents/GitHub/spyglass/DATA/analysis/mediumnwb20230802/mediumnwb20230802_AMBBKQ9RIY.nwb\n", - "[2024-01-29 13:52:02,984][WARNING]: Skipped checksum for file with hash: fa76d419-77a4-697a-325d-5c2ddbe517f9, and path: /Users/edeno/Documents/GitHub/spyglass/DATA/analysis/mediumnwb20230802/mediumnwb20230802_0R6AWXMC6G.nwb\n", - "[2024-01-29 13:52:03,365][WARNING]: Skipped checksum for file with hash: f64f34ee-e72d-e566-a048-65f2ea31708a, and path: /Users/edeno/Documents/GitHub/spyglass/DATA/analysis/mediumnwb20230802/mediumnwb20230802_USMRXAAV8I.nwb\n", - "[2024-01-29 13:52:03,762][WARNING]: Skipped checksum for file with hash: e282a8e5-844b-20f6-345c-cded12e761a9, and path: /Users/edeno/Documents/GitHub/spyglass/DATA/analysis/mediumnwb20230802/mediumnwb20230802_DUNM1TZUGR.nwb\n", - "[2024-01-29 13:52:04,194][WARNING]: Skipped checksum for file with hash: d740eb7d-ce29-e140-06a2-c56655e0842a, and path: /Users/edeno/Documents/GitHub/spyglass/DATA/analysis/mediumnwb20230802/mediumnwb20230802_L92EE1VRPB.nwb\n", - "[2024-01-29 13:52:04,662][WARNING]: Skipped checksum for file with hash: e43f95ff-9779-b980-00a3-99e104864462, and path: /Users/edeno/Documents/GitHub/spyglass/DATA/analysis/mediumnwb20230802/mediumnwb20230802_AKOI7OTASI.nwb\n", - "[2024-01-29 13:52:05,074][WARNING]: Skipped checksum for file with hash: 6d04cbdb-e1e4-f44f-7274-0e1ab0356d75, and path: /Users/edeno/Documents/GitHub/spyglass/DATA/analysis/mediumnwb20230802/mediumnwb20230802_W1MLF0Q86S.nwb\n", - "[2024-01-29 13:52:05,558][WARNING]: Skipped checksum for file with hash: 9e24661c-b021-6ad4-f224-89e331334f18, and path: /Users/edeno/Documents/GitHub/spyglass/DATA/analysis/mediumnwb20230802/mediumnwb20230802_T2DBO3EMZ8.nwb\n", - "[2024-01-29 13:52:05,938][WARNING]: Skipped checksum for file with hash: 1f386cd3-89da-0233-03ff-76ba94e91a3a, and path: /Users/edeno/Documents/GitHub/spyglass/DATA/analysis/mediumnwb20230802/mediumnwb20230802_TX2ZX3DAP4.nwb\n", - "[2024-01-29 13:52:06,285][WARNING]: Skipped checksum for file with hash: fde8b240-6adc-86f0-6391-f3f6fad72ee9, and path: /Users/edeno/Documents/GitHub/spyglass/DATA/analysis/mediumnwb20230802/mediumnwb20230802_HWU3E4EKP4.nwb\n", - "[2024-01-29 13:52:06,641][WARNING]: Skipped checksum for file with hash: 6d13e338-41bd-b011-beb5-4de53d9d467b, and path: /Users/edeno/Documents/GitHub/spyglass/DATA/analysis/mediumnwb20230802/mediumnwb20230802_JA2OA12RPN.nwb\n", - "[2024-01-29 13:52:07,019][WARNING]: Skipped checksum for file with hash: c202eb9e-ca43-0a72-4086-57a5bb6eb937, and path: /Users/edeno/Documents/GitHub/spyglass/DATA/analysis/mediumnwb20230802/mediumnwb20230802_5TY04H3B5T.nwb\n", - "[2024-01-29 13:52:07,412][WARNING]: Skipped checksum for file with hash: 26f7bdc7-da8d-6ad5-3f4a-554ceb48755e, and path: /Users/edeno/Documents/GitHub/spyglass/DATA/analysis/mediumnwb20230802/mediumnwb20230802_0TKF5589B7.nwb\n", - "[2024-01-29 13:52:07,806][WARNING]: Skipped checksum for file with hash: 023c874f-8114-3ef6-7fcf-813844787d5f, and path: /Users/edeno/Documents/GitHub/spyglass/DATA/analysis/mediumnwb20230802/mediumnwb20230802_L7HDY9IDHO.nwb\n", - "[2024-01-29 13:52:08,189][WARNING]: Skipped checksum for file with hash: ce4cb0c3-3dd0-70fd-8ea0-98a8b84592d9, and path: /Users/edeno/Documents/GitHub/spyglass/DATA/analysis/mediumnwb20230802/mediumnwb20230802_7UIA2ILMG6.nwb\n", - "[2024-01-29 13:52:08,553][WARNING]: Skipped checksum for file with hash: c592e63b-4db1-40be-632e-0180e6fa02d7, and path: /Users/edeno/Documents/GitHub/spyglass/DATA/analysis/mediumnwb20230802/mediumnwb20230802_SGAU9PX7US.nwb\n", - "[2024-01-29 13:52:08,875][WARNING]: Skipped checksum for file with hash: 4c1103ac-eaca-b282-e5ff-aa2194e65a43, and path: /Users/edeno/Documents/GitHub/spyglass/DATA/analysis/mediumnwb20230802/mediumnwb20230802_2R6VQ8EDL4.nwb\n", - "/Users/edeno/miniconda3/envs/spyglass/lib/python3.9/site-packages/pynwb/ecephys.py:90: UserWarning: ElectricalSeries 'e-series': The second dimension of data does not match the length of electrodes. Your data may be transposed.\n", - " warnings.warn(\"%s '%s': The second dimension of data does not match the length of electrodes. \"\n", - "/Users/edeno/miniconda3/envs/spyglass/lib/python3.9/site-packages/pynwb/base.py:193: UserWarning: TimeSeries 'analog': Length of data does not match length of timestamps. Your data may be transposed. Time should be on the 0th dimension\n", - " warn(\"%s '%s': Length of data does not match length of timestamps. Your data may be transposed. \"\n", - "[13:52:10][INFO] Spyglass: Writing new NWB file mediumnwb20230802_0ADLJ3W6MJ.nwb\n" - ] - } - ], - "source": [ - "selection_key = {\n", - " \"mua_param_name\": \"default\",\n", - " \"nwb_file_name\": nwb_copy_file_name,\n", - " \"sorted_spikes_group_name\": \"test_group\",\n", - " \"pos_merge_id\": position_merge_id,\n", - " \"artifact_interval_list_name\": \"test_artifact_times\",\n", - "}\n", - "\n", - "MuaEventsV1.populate(selection_key)" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " \n", - " \n", - " \n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "
\n", - "

mua_param_name

\n", - " a name for this set of parameters\n", - "
\n", - "

nwb_file_name

\n", - " name of the NWB file\n", - "
\n", - "

sorted_spikes_group_name

\n", - " \n", - "
\n", - "

pos_merge_id

\n", - " \n", - "
\n", - "

artifact_interval_list_name

\n", - " descriptive name of this interval list\n", - "
\n", - "

analysis_file_name

\n", - " name of the file\n", - "
\n", - "

mua_times_object_id

\n", - " \n", - "
defaultmediumnwb20230802_.nwbtest_group6dfae23d-6034-e483-06e7-28ab4c29282ftest_artifact_timesmediumnwb20230802_0ADLJ3W6MJ.nwb56d076f9-8751-4cec-b7b4-21a14058fcff
\n", - " \n", - "

Total: 1

\n", - " " - ], - "text/plain": [ - "*mua_param_nam *nwb_file_name *sorted_spikes *pos_merge_id *artifact_inte analysis_file_ mua_times_obje\n", - "+------------+ +------------+ +------------+ +------------+ +------------+ +------------+ +------------+\n", - "default mediumnwb20230 test_group 6dfae23d-6034- test_artifact_ mediumnwb20230 56d076f9-8751-\n", - " (Total: 1)" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "MuaEventsV1 & selection_key" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "[2024-01-29 13:52:11,975][WARNING]: Skipped checksum for file with hash: 6b7e200d-7337-6c3e-ae61-b52ac7b9d6ca, and path: /Users/edeno/Documents/GitHub/spyglass/DATA/analysis/mediumnwb20230802/mediumnwb20230802_0ADLJ3W6MJ.nwb\n" - ] - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
start_timeend_timedurationmean_zscoremedian_zscoremax_zscoremin_zscorespeed_at_startspeed_at_endmax_speedmin_speedmedian_speedmean_speed
id
01.625936e+091.625936e+090.0840001.2509941.2255172.3462750.0269002.8457751.4424412.8457751.3523431.9788322.010321
11.625936e+091.625936e+090.0680001.8671701.9945183.2431240.0614680.2875110.1166740.2875110.1166740.1841480.190783
21.625936e+091.625936e+090.1280001.3084371.0480303.0132050.0226772.0975261.2618062.1313991.2618061.9450541.848956
31.625936e+091.625936e+090.2600001.8470132.2257662.9791400.0281240.7939930.5237512.1964690.5237511.6970521.616889
41.625936e+091.625936e+090.0920001.3202181.3678872.3771420.0218572.1399931.3046872.1399931.1423131.3215521.465801
..........................................
2121.625937e+091.625937e+090.2280005.0200904.97621610.5399190.2398891.3363510.4412901.3363510.3896530.8283710.804487
2131.625937e+091.625937e+090.3039994.8701604.9684718.5614970.1293860.9567870.4084020.9661320.1708950.4169610.540956
2141.625937e+091.625937e+090.1400003.2504983.1461046.1574760.1228351.7450862.1990062.2621941.7450862.2020812.125525
2151.625937e+091.625937e+090.0600002.1291162.2166163.7904660.1270671.3324291.0778091.3324291.0778091.2655361.242683
2161.625937e+091.625937e+090.1040001.5469421.6816912.5946440.0070790.3695860.1850780.3758290.1839490.3032570.291096
\n", - "

217 rows × 13 columns

\n", - "
" - ], - "text/plain": [ - " start_time end_time duration mean_zscore median_zscore \\\n", - "id \n", - "0 1.625936e+09 1.625936e+09 0.084000 1.250994 1.225517 \n", - "1 1.625936e+09 1.625936e+09 0.068000 1.867170 1.994518 \n", - "2 1.625936e+09 1.625936e+09 0.128000 1.308437 1.048030 \n", - "3 1.625936e+09 1.625936e+09 0.260000 1.847013 2.225766 \n", - "4 1.625936e+09 1.625936e+09 0.092000 1.320218 1.367887 \n", - ".. ... ... ... ... ... \n", - "212 1.625937e+09 1.625937e+09 0.228000 5.020090 4.976216 \n", - "213 1.625937e+09 1.625937e+09 0.303999 4.870160 4.968471 \n", - "214 1.625937e+09 1.625937e+09 0.140000 3.250498 3.146104 \n", - "215 1.625937e+09 1.625937e+09 0.060000 2.129116 2.216616 \n", - "216 1.625937e+09 1.625937e+09 0.104000 1.546942 1.681691 \n", - "\n", - " max_zscore min_zscore speed_at_start speed_at_end max_speed \\\n", - "id \n", - "0 2.346275 0.026900 2.845775 1.442441 2.845775 \n", - "1 3.243124 0.061468 0.287511 0.116674 0.287511 \n", - "2 3.013205 0.022677 2.097526 1.261806 2.131399 \n", - "3 2.979140 0.028124 0.793993 0.523751 2.196469 \n", - "4 2.377142 0.021857 2.139993 1.304687 2.139993 \n", - ".. ... ... ... ... ... \n", - "212 10.539919 0.239889 1.336351 0.441290 1.336351 \n", - "213 8.561497 0.129386 0.956787 0.408402 0.966132 \n", - "214 6.157476 0.122835 1.745086 2.199006 2.262194 \n", - "215 3.790466 0.127067 1.332429 1.077809 1.332429 \n", - "216 2.594644 0.007079 0.369586 0.185078 0.375829 \n", - "\n", - " min_speed median_speed mean_speed \n", - "id \n", - "0 1.352343 1.978832 2.010321 \n", - "1 0.116674 0.184148 0.190783 \n", - "2 1.261806 1.945054 1.848956 \n", - "3 0.523751 1.697052 1.616889 \n", - "4 1.142313 1.321552 1.465801 \n", - ".. ... ... ... \n", - "212 0.389653 0.828371 0.804487 \n", - "213 0.170895 0.416961 0.540956 \n", - "214 1.745086 2.202081 2.125525 \n", - "215 1.077809 1.265536 1.242683 \n", - "216 0.183949 0.303257 0.291096 \n", - "\n", - "[217 rows x 13 columns]" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "mua_times = (MuaEventsV1 & selection_key).fetch1_dataframe()\n", - "mua_times" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(1625935966.608866, 1625935994.6048138)" - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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iIiIiIiIsonBNyIiIiIiIiIiogxh8I0oQwwGA37wgx/AYDDkeleICgrPHaLk8fwhSg7PHaLk8fwhio0134iIiIiIiIiIiDKEmW9EREREREREREQZwuAbERERERERERFRhjD4RkRERERERERElCEMvhEREREREREREWUIg29EREREREREREQZwuAbERERERERERFRhjD4RkRERERERERElCEMvhEREREREREREWUIg29EREREREREREQZwuAbERERERERERFRhjD4RkRERERERERElCEMvhEREREREREREWUIg29EREREREREREQZwuAbERERERERERFRhjD4RkRERERERERElCEMvhEREREREREREWUIg29EREREREREREQZUvDBN6/Xi+9973uYMWMGjEYjZs6cidtvvx1+v1/aRhAEbNiwAa2trTAajVi5ciW2b9+ew70mIiIiIiIiIqJSUPDBt7vvvhuPPvooHnzwQezYsQP33HMP7r33XjzwwAPSNvfccw82bdqEBx98EO+++y6am5uxatUqjI2N5XDPiYiIiIiIiIio2KkEQRByvROpOPvss9HU1IRf/vKX0ufOP/98mEwmPPXUUxAEAa2trVi/fj2+/e1vAwBcLheamppw991346qrrsrVrhMRERERERERUZHT5noHUnXcccfh0Ucfxa5duzB37lx8+OGHeOutt3D//fcDANrb29Hb24vVq1dL32MwGHDiiSfi7bffjhh8c7lccLlc0sd+vx/Dw8Oor6+HSqXK6O9ERERERERERET5SxAEjI2NobW1FWp19IWlBR98+/a3vw2z2Yz58+dDo9HA5/PhzjvvxCWXXAIA6O3tBQA0NTUpvq+pqQkdHR0RX/euu+7CD3/4w8ztOBERERERERERFbTOzk5MmTIl6jYFH3x77rnn8PTTT+OZZ57BwoUL8cEHH2D9+vVobW3F5ZdfLm0XnK0mCELUDLZbb70VN9xwg/Sx2WzG1KlT0dnZiaqqqvT/IrGYzcD/+38TH194IVBdnf39SCfxdzIaAYNB+TWXC3A4iuP3zLVo7zPA95qISoP8WgjwukdE6Rc85uIYi4ioqFksFrS1taGysjLmtgUffLvppptwyy234Atf+AIAYPHixejo6MBdd92Fyy+/HM3NzQACGXAtLS3S9/X394dkw8kZDAYYwgQqqqqqchN8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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import matplotlib.pyplot as plt\n", - "import numpy as np\n", - "\n", - "fig, axes = plt.subplots(2, 1, sharex=True, figsize=(15, 4))\n", - "axes[0].plot(\n", - " time,\n", - " multiunit_firing_rate,\n", - ")\n", - "axes[0].set_ylabel(\"firing rate (Hz)\")\n", - "axes[0].set_title(\"multiunit\")\n", - "axes[1].fill_between(\n", - " time, position_info[\"speed\"].iloc[time_ind_slice], color=\"lightgrey\"\n", - ")\n", - "axes[1].set_ylabel(\"speed (cm/s)\")\n", - "axes[1].set_xlabel(\"time (s)\")\n", - "\n", - "in_bounds = np.logical_and(\n", - " mua_times.start_time >= time[0], mua_times.end_time <= time[-1]\n", - ")\n", - "\n", - "for mua_time in mua_times.loc[in_bounds].itertuples():\n", - " axes[0].axvspan(\n", - " mua_time.start_time, mua_time.end_time, color=\"red\", alpha=0.3\n", - " )\n", - " axes[1].axvspan(\n", - " mua_time.start_time, mua_time.end_time, color=\"red\", alpha=0.3\n", - " )\n", - "axes[1].set_ylim((0, 80))\n", - "axes[1].axhline(4, color=\"black\", linestyle=\"--\")\n", - "axes[1].set_xlim((time[0], time[-1]))" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - " \n", - " \n", - " Time intervals used for analysis\n", - "
\n", - " \n", - " \n", - " \n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "
\n", - "

nwb_file_name

\n", - " name of the NWB file\n", - "
\n", - "

interval_list_name

\n", - " descriptive name of this interval list\n", - "
\n", - "

valid_times

\n", - " numpy array with start/end times for each interval\n", - "
\n", - "

pipeline

\n", - " type of interval list (e.g. 'position', 'spikesorting_recording_v1')\n", - "
mediumnwb20230802_.nwb0e848c38-9105-4ea4-b6ba-dbdd5b46a088=BLOB=spikesorting_artifact_v1
mediumnwb20230802_.nwb0f91197e-bebb-4dc6-ad41-5bf89c3eed28=BLOB=spikesorting_artifact_v1
mediumnwb20230802_.nwb15c8a3e8-5ce9-4654-891e-6ee4109d6f1a=BLOB=spikesorting_artifact_v1
mediumnwb20230802_.nwb2b93bcd0-7b05-457c-8aab-c41ef543ecf2=BLOB=spikesorting_artifact_v1
mediumnwb20230802_.nwb2b9fbf14-74a0-4294-a805-26702340aac9=BLOB=spikesorting_artifact_v1
mediumnwb20230802_.nwb3a34ab35-eca6-406b-abab-c866a9f41fb9=BLOB=spikesorting_artifact_v1
mediumnwb20230802_.nwb3fecf0af-6ce7-474c-b933-9feb746993a0=BLOB=spikesorting_artifact_v1
mediumnwb20230802_.nwb45f6b9a1-eef3-46eb-866d-d0999afebda6=BLOB=spikesorting_artifact_v1
mediumnwb20230802_.nwb5c68f0f0-f577-4905-8a09-e4d171d0a22d=BLOB=spikesorting_artifact_v1
mediumnwb20230802_.nwb686d9951-1c0f-4d5e-9f5c-09e6fd8bdd4c=BLOB=spikesorting_artifact_v1
mediumnwb20230802_.nwb69f7d164-efc8-4621-b83c-77bc7459dbc2=BLOB=spikesorting_artifact_v1
mediumnwb20230802_.nwb719e8a86-fcf1-4ffc-8c1f-ea912f67ad5d=BLOB=spikesorting_artifact_v1
\n", - "

...

\n", - "

Total: 24

\n", - " " - ], - "text/plain": [ - "*nwb_file_name *interval_list valid_time pipeline \n", - "+------------+ +------------+ +--------+ +------------+\n", - "mediumnwb20230 0e848c38-9105- =BLOB= spikesorting_a\n", - "mediumnwb20230 0f91197e-bebb- =BLOB= spikesorting_a\n", - "mediumnwb20230 15c8a3e8-5ce9- =BLOB= spikesorting_a\n", - "mediumnwb20230 2b93bcd0-7b05- =BLOB= spikesorting_a\n", - "mediumnwb20230 2b9fbf14-74a0- =BLOB= spikesorting_a\n", - "mediumnwb20230 3a34ab35-eca6- =BLOB= spikesorting_a\n", - "mediumnwb20230 3fecf0af-6ce7- =BLOB= spikesorting_a\n", - "mediumnwb20230 45f6b9a1-eef3- =BLOB= spikesorting_a\n", - "mediumnwb20230 5c68f0f0-f577- =BLOB= spikesorting_a\n", - "mediumnwb20230 686d9951-1c0f- =BLOB= spikesorting_a\n", - "mediumnwb20230 69f7d164-efc8- =BLOB= spikesorting_a\n", - "mediumnwb20230 719e8a86-fcf1- =BLOB= spikesorting_a\n", - " ...\n", - " (Total: 24)" - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "from spyglass.common import IntervalList\n", - "\n", - "IntervalList() & {\"nwb_file_name\": nwb_copy_file_name, \"pipeline\": \"spikesorting_artifact_v1\"}" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " \n", - " \n", - " \n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "
\n", - "

artifact_param_name

\n", - " \n", - "
\n", - "

recording_id

\n", - " \n", - "
\n", - "

artifact_id

\n", - " \n", - "
\n", - "

artifact_params

\n", - " \n", - "
\n", - "

analysis_file_name

\n", - " name of the file\n", - "
\n", - "

object_id

\n", - " Object ID for the processed recording in NWB file\n", - "
nonef1427e00-2974-4301-b2ac-b4dc29277c510e848c38-9105-4ea4-b6ba-dbdd5b46a088=BLOB=mediumnwb20230802_3BWJOEGAO1.nwb8366dcfd-bd90-470f-b08c-183bd44dcd1f
none3c40ebdc-0b61-4105-9971-e1348bd49bc70f91197e-bebb-4dc6-ad41-5bf89c3eed28=BLOB=mediumnwb20230802_85VG1GLTSR.nwb2d6e841c-4f98-42b7-9cbf-097fa8ba0766
none1e3f3707-613e-4a44-93f1-c7e5484112cd15c8a3e8-5ce9-4654-891e-6ee4109d6f1a=BLOB=mediumnwb20230802_H70AAE9UEI.nwb34550b0b-36c7-4dfb-b1ba-900fc9247da8
none72f70c5a-bc0f-46cb-b22f-33bafe2315df2b93bcd0-7b05-457c-8aab-c41ef543ecf2=BLOB=mediumnwb20230802_OFQSUAGB74.nwb3a1b3df6-fa85-4006-ab9b-4bff45680516
none3a2c3eed-413a-452a-83c8-0e4648141bde2b9fbf14-74a0-4294-a805-26702340aac9=BLOB=mediumnwb20230802_G0STLTBOSC.nwbec5170e0-277a-4626-9120-b24574eae650
noned14ae25a-2796-4203-ba0b-f28768536cbe3a34ab35-eca6-406b-abab-c866a9f41fb9=BLOB=mediumnwb20230802_IG73IGEYPA.nwba3406f7e-1137-4c34-8715-e0323d074153
none76ee4ab3-da3e-4a68-9159-635fbf5f8a043fecf0af-6ce7-474c-b933-9feb746993a0=BLOB=mediumnwb20230802_LFO7YW7IIA.nwbcfe309be-3748-4dc8-9c71-81bd5c1067b7
none449b64e3-db0b-437e-a1b9-0d29928aa2dd45f6b9a1-eef3-46eb-866d-d0999afebda6=BLOB=mediumnwb20230802_R19M5A499A.nwb68db8ac5-d008-4720-a3f8-162b0671313d
nonef07bc0b0-de6b-4424-8ef9-766213aaca265c68f0f0-f577-4905-8a09-e4d171d0a22d=BLOB=mediumnwb20230802_GF6Z0P5KYV.nwb80c14292-a179-4c0f-9ff9-79016038ce95
none328da21c-1d9c-41e2-9800-76b3484b707b686d9951-1c0f-4d5e-9f5c-09e6fd8bdd4c=BLOB=mediumnwb20230802_YSZXPEGP4X.nwb623a46f8-be44-434b-8aee-49155070f3f7
noneb81f1ed9-fb2e-4f5c-93d8-d9cc0f11887569f7d164-efc8-4621-b83c-77bc7459dbc2=BLOB=mediumnwb20230802_QBQBH0I2OO.nwb101d753a-72fb-47a4-8734-962f8ef4f477
noneaff78f2f-2ba0-412a-95cc-447c3a2f4683719e8a86-fcf1-4ffc-8c1f-ea912f67ad5d=BLOB=mediumnwb20230802_42H3PR863Y.nwb6c5f3cd0-903a-42b5-ad68-261789bfd1a8
\n", - "

...

\n", - "

Total: 24

\n", - " " - ], - "text/plain": [ - "*artifact_para *recording_id *artifact_id artifact_p analysis_file_ object_id \n", - "+------------+ +------------+ +------------+ +--------+ +------------+ +------------+\n", - "none f1427e00-2974- 0e848c38-9105- =BLOB= mediumnwb20230 8366dcfd-bd90-\n", - "none 3c40ebdc-0b61- 0f91197e-bebb- =BLOB= mediumnwb20230 2d6e841c-4f98-\n", - "none 1e3f3707-613e- 15c8a3e8-5ce9- =BLOB= mediumnwb20230 34550b0b-36c7-\n", - "none 72f70c5a-bc0f- 2b93bcd0-7b05- =BLOB= mediumnwb20230 3a1b3df6-fa85-\n", - "none 3a2c3eed-413a- 2b9fbf14-74a0- =BLOB= mediumnwb20230 ec5170e0-277a-\n", - "none d14ae25a-2796- 3a34ab35-eca6- =BLOB= mediumnwb20230 a3406f7e-1137-\n", - "none 76ee4ab3-da3e- 3fecf0af-6ce7- =BLOB= mediumnwb20230 cfe309be-3748-\n", - "none 449b64e3-db0b- 45f6b9a1-eef3- =BLOB= mediumnwb20230 68db8ac5-d008-\n", - "none f07bc0b0-de6b- 5c68f0f0-f577- =BLOB= mediumnwb20230 80c14292-a179-\n", - "none 328da21c-1d9c- 686d9951-1c0f- =BLOB= mediumnwb20230 623a46f8-be44-\n", - "none b81f1ed9-fb2e- 69f7d164-efc8- =BLOB= mediumnwb20230 101d753a-72fb-\n", - "none aff78f2f-2ba0- 719e8a86-fcf1- =BLOB= mediumnwb20230 6c5f3cd0-903a-\n", - " ...\n", - " (Total: 24)" - ] - }, - "execution_count": 18, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "(sgs.ArtifactDetectionParameters\n", - "* sgs.SpikeSortingRecording\n", - "* sgs.ArtifactDetectionSelection)" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " \n", - " \n", - " \n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "
\n", - "

merge_id

\n", - " \n", - "
\n", - "

artifact_param_name

\n", - " \n", - "
\n", - "

recording_id

\n", - " \n", - "
\n", - "

artifact_id

\n", - " \n", - "
\n", - "

sorting_id

\n", - " \n", - "
\n", - "

curation_id

\n", - " \n", - "
\n", - "

artifact_params

\n", - " \n", - "
\n", - "

analysis_file_name

\n", - " name of the file\n", - "
\n", - "

object_id

\n", - " Object ID for the processed recording in NWB file\n", - "
485a4ddf-332d-35b5-3ad4-0561736c1844nonef15351b3-d8e9-49a1-a306-4f366f1ee535a5470cef-fc31-4723-9e1b-a024e73ef3b108a302b6-5505-40fa-b4d5-62162f8eef580=BLOB=mediumnwb20230802_JVBY43AQFF.nwbf639dd9a-fc4f-483e-a9c5-f487ecd11292
485a4ddf-332d-35b5-3ad4-0561736c1844nonef1427e00-2974-4301-b2ac-b4dc29277c510e848c38-9105-4ea4-b6ba-dbdd5b46a08808a302b6-5505-40fa-b4d5-62162f8eef580=BLOB=mediumnwb20230802_3BWJOEGAO1.nwb8366dcfd-bd90-470f-b08c-183bd44dcd1f
485a4ddf-332d-35b5-3ad4-0561736c1844nonef07bc0b0-de6b-4424-8ef9-766213aaca265c68f0f0-f577-4905-8a09-e4d171d0a22d08a302b6-5505-40fa-b4d5-62162f8eef580=BLOB=mediumnwb20230802_GF6Z0P5KYV.nwb80c14292-a179-4c0f-9ff9-79016038ce95
485a4ddf-332d-35b5-3ad4-0561736c1844nonee59e77e9-dd41-4f58-a75b-17271b78c0d88cc7a814-8e4a-4b87-ae71-80ca1f5771b108a302b6-5505-40fa-b4d5-62162f8eef580=BLOB=mediumnwb20230802_8SB3X7Y9YA.nwbc880110b-1dbf-4cc1-99ff-3766ade81fed
485a4ddf-332d-35b5-3ad4-0561736c1844noned14ae25a-2796-4203-ba0b-f28768536cbe3a34ab35-eca6-406b-abab-c866a9f41fb908a302b6-5505-40fa-b4d5-62162f8eef580=BLOB=mediumnwb20230802_IG73IGEYPA.nwba3406f7e-1137-4c34-8715-e0323d074153
485a4ddf-332d-35b5-3ad4-0561736c1844noneb81f1ed9-fb2e-4f5c-93d8-d9cc0f11887569f7d164-efc8-4621-b83c-77bc7459dbc208a302b6-5505-40fa-b4d5-62162f8eef580=BLOB=mediumnwb20230802_QBQBH0I2OO.nwb101d753a-72fb-47a4-8734-962f8ef4f477
485a4ddf-332d-35b5-3ad4-0561736c1844noneaff78f2f-2ba0-412a-95cc-447c3a2f4683719e8a86-fcf1-4ffc-8c1f-ea912f67ad5d08a302b6-5505-40fa-b4d5-62162f8eef580=BLOB=mediumnwb20230802_42H3PR863Y.nwb6c5f3cd0-903a-42b5-ad68-261789bfd1a8
485a4ddf-332d-35b5-3ad4-0561736c1844nonea9b7cec0-1256-49cf-abf0-8c45fd15537974270cba-36ee-4afb-ab50-2a6cc948e68c08a302b6-5505-40fa-b4d5-62162f8eef580=BLOB=mediumnwb20230802_5GUFKQ59T6.nwb498d52a8-47d1-41c2-bd45-2ac796fce4cd
485a4ddf-332d-35b5-3ad4-0561736c1844nonea3f5b9e7-7c79-4eb4-b5ed-910191c615c2f9cc9158-bea2-4de2-811d-1fb895c048a908a302b6-5505-40fa-b4d5-62162f8eef580=BLOB=mediumnwb20230802_OQZ8C41NHS.nwbd49e9245-149c-4725-bd0f-d69b78e0a33a
485a4ddf-332d-35b5-3ad4-0561736c1844none9e332d82-1daf-4e92-bb50-12e4f94308759ed11db5-c42e-491a-8caf-7d9a37a65f1308a302b6-5505-40fa-b4d5-62162f8eef580=BLOB=mediumnwb20230802_30PFKCH9HH.nwba45a4c86-d748-48f8-b406-4da381a74737
485a4ddf-332d-35b5-3ad4-0561736c1844none7f128981-6868-4976-ba20-248655dcac21f4b9301f-bc91-455b-9474-c801093f385608a302b6-5505-40fa-b4d5-62162f8eef580=BLOB=mediumnwb20230802_F9B938GB2N.nwbb06a3ec5-17a2-49a3-bd7f-475cb07081a0
485a4ddf-332d-35b5-3ad4-0561736c1844none7cc37209-7c28-443d-8f65-d8b01ca49a9af8650c19-8964-44ea-bd87-0245f1d2f93408a302b6-5505-40fa-b4d5-62162f8eef580=BLOB=mediumnwb20230802_XAQMO7WRC5.nwb38522acb-ba02-4fe1-b715-3c7485cca749
\n", - "

...

\n", - "

Total: 552

\n", - " " - ], - "text/plain": [ - "*merge_id *artifact_para *recording_id *artifact_id sorting_id curation_id artifact_p analysis_file_ object_id \n", - "+------------+ +------------+ +------------+ +------------+ +------------+ +------------+ +--------+ +------------+ +------------+\n", - "485a4ddf-332d- none f15351b3-d8e9- a5470cef-fc31- 08a302b6-5505- 0 =BLOB= mediumnwb20230 f639dd9a-fc4f-\n", - "485a4ddf-332d- none f1427e00-2974- 0e848c38-9105- 08a302b6-5505- 0 =BLOB= mediumnwb20230 8366dcfd-bd90-\n", - "485a4ddf-332d- none f07bc0b0-de6b- 5c68f0f0-f577- 08a302b6-5505- 0 =BLOB= mediumnwb20230 80c14292-a179-\n", - "485a4ddf-332d- none e59e77e9-dd41- 8cc7a814-8e4a- 08a302b6-5505- 0 =BLOB= mediumnwb20230 c880110b-1dbf-\n", - "485a4ddf-332d- none d14ae25a-2796- 3a34ab35-eca6- 08a302b6-5505- 0 =BLOB= mediumnwb20230 a3406f7e-1137-\n", - "485a4ddf-332d- none b81f1ed9-fb2e- 69f7d164-efc8- 08a302b6-5505- 0 =BLOB= mediumnwb20230 101d753a-72fb-\n", - "485a4ddf-332d- none aff78f2f-2ba0- 719e8a86-fcf1- 08a302b6-5505- 0 =BLOB= mediumnwb20230 6c5f3cd0-903a-\n", - "485a4ddf-332d- none a9b7cec0-1256- 74270cba-36ee- 08a302b6-5505- 0 =BLOB= mediumnwb20230 498d52a8-47d1-\n", - "485a4ddf-332d- none a3f5b9e7-7c79- f9cc9158-bea2- 08a302b6-5505- 0 =BLOB= mediumnwb20230 d49e9245-149c-\n", - "485a4ddf-332d- none 9e332d82-1daf- 9ed11db5-c42e- 08a302b6-5505- 0 =BLOB= mediumnwb20230 a45a4c86-d748-\n", - "485a4ddf-332d- none 7f128981-6868- f4b9301f-bc91- 08a302b6-5505- 0 =BLOB= mediumnwb20230 b06a3ec5-17a2-\n", - "485a4ddf-332d- none 7cc37209-7c28- f8650c19-8964- 08a302b6-5505- 0 =BLOB= mediumnwb20230 38522acb-ba02-\n", - " ...\n", - " (Total: 552)" - ] - }, - "execution_count": 29, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "SpikeSortingOutput.CurationV1() * (\n", - " sgs.ArtifactDetectionParameters\n", - " * sgs.SpikeSortingRecording\n", - " * sgs.ArtifactDetectionSelection\n", + "(MuaEventsV1 & mua_key).create_figurl(\n", + " zscore_mua=True,\n", ")" ] }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "(\n", - " IntervalList()\n", - " & {\n", - " \"nwb_file_name\": nwb_copy_file_name,\n", - " \"pipeline\": \"spikesorting_artifact_v1\",\n", - " }\n", - ").proj(artifact_id=\"interval_list_name\")" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " \n", - " \n", - " \n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "
\n", - "

recording_id

\n", - " \n", - "
\n", - "

artifact_id

\n", - " \n", - "
\n", - "

analysis_file_name

\n", - " name of the file\n", - "
\n", - "

object_id

\n", - " Object ID for the processed recording in NWB file\n", - "
\n", - "

artifact_param_name

\n", - " \n", - "
04f3ecb4-a18c-4ffb-85d8-2f5f62d4d6d47a93bd27-5108-4290-89a2-2f8770664b35mediumnwb20230802_F7HG9E9J3I.nwb16bded49-3fc2-4e37-9ac6-385eec091740none
1d2b5966-415a-4c65-955a-0e422d8b5b00e4921df8-99b5-4f52-b3c2-988b9433e0cfmediumnwb20230802_C0I26JVUNV.nwba07a4fcc-ac84-4d07-a036-b32c7e2ceb28none
1e3f3707-613e-4a44-93f1-c7e5484112cd15c8a3e8-5ce9-4654-891e-6ee4109d6f1amediumnwb20230802_H70AAE9UEI.nwb34550b0b-36c7-4dfb-b1ba-900fc9247da8none
2402805a-04f9-4a88-9ccf-071376c8de19d581b117-160e-4311-b096-7781a4de4394mediumnwb20230802_5MEOIHZ5E5.nwbbf877f6e-5daf-4d70-ab23-fc2b7c132370none
24107d8c-ce26-4c77-8f6a-bf6955d8a3c7d1925dc7-e3b0-47ef-adbc-1af129b67048mediumnwb20230802_MKQ2TG5YZC.nwb7f55e942-7563-466a-ba56-b82ea5089be4none
257c077b-8f3b-4abb-a631-6b8084d6a1eae289e03d-32ad-461a-a1cc-c88537343149mediumnwb20230802_C2DEV7V2C6.nwbc19ca39e-50a4-4e87-a8e7-22ccf5979f27none
328da21c-1d9c-41e2-9800-76b3484b707b686d9951-1c0f-4d5e-9f5c-09e6fd8bdd4cmediumnwb20230802_YSZXPEGP4X.nwb623a46f8-be44-434b-8aee-49155070f3f7none
3a2c3eed-413a-452a-83c8-0e4648141bde2b9fbf14-74a0-4294-a805-26702340aac9mediumnwb20230802_G0STLTBOSC.nwbec5170e0-277a-4626-9120-b24574eae650none
3c40ebdc-0b61-4105-9971-e1348bd49bc70f91197e-bebb-4dc6-ad41-5bf89c3eed28mediumnwb20230802_85VG1GLTSR.nwb2d6e841c-4f98-42b7-9cbf-097fa8ba0766none
449b64e3-db0b-437e-a1b9-0d29928aa2dd45f6b9a1-eef3-46eb-866d-d0999afebda6mediumnwb20230802_R19M5A499A.nwb68db8ac5-d008-4720-a3f8-162b0671313dnone
72f70c5a-bc0f-46cb-b22f-33bafe2315df2b93bcd0-7b05-457c-8aab-c41ef543ecf2mediumnwb20230802_OFQSUAGB74.nwb3a1b3df6-fa85-4006-ab9b-4bff45680516none
76ee4ab3-da3e-4a68-9159-635fbf5f8a043fecf0af-6ce7-474c-b933-9feb746993a0mediumnwb20230802_LFO7YW7IIA.nwbcfe309be-3748-4dc8-9c71-81bd5c1067b7none
\n", - "

...

\n", - "

Total: 24

\n", - " " - ], - "text/plain": [ - "*recording_id *artifact_id analysis_file_ object_id artifact_param\n", - "+------------+ +------------+ +------------+ +------------+ +------------+\n", - "04f3ecb4-a18c- 7a93bd27-5108- mediumnwb20230 16bded49-3fc2- none \n", - "1d2b5966-415a- e4921df8-99b5- mediumnwb20230 a07a4fcc-ac84- none \n", - "1e3f3707-613e- 15c8a3e8-5ce9- mediumnwb20230 34550b0b-36c7- none \n", - "2402805a-04f9- d581b117-160e- mediumnwb20230 bf877f6e-5daf- none \n", - "24107d8c-ce26- d1925dc7-e3b0- mediumnwb20230 7f55e942-7563- none \n", - "257c077b-8f3b- e289e03d-32ad- mediumnwb20230 c19ca39e-50a4- none \n", - "328da21c-1d9c- 686d9951-1c0f- mediumnwb20230 623a46f8-be44- none \n", - "3a2c3eed-413a- 2b9fbf14-74a0- mediumnwb20230 ec5170e0-277a- none \n", - "3c40ebdc-0b61- 0f91197e-bebb- mediumnwb20230 2d6e841c-4f98- none \n", - "449b64e3-db0b- 45f6b9a1-eef3- mediumnwb20230 68db8ac5-d008- none \n", - "72f70c5a-bc0f- 2b93bcd0-7b05- mediumnwb20230 3a1b3df6-fa85- none \n", - "76ee4ab3-da3e- 3fecf0af-6ce7- mediumnwb20230 cfe309be-3748- none \n", - " ...\n", - " (Total: 24)" - ] - }, - "execution_count": 20, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "sgs.SpikeSortingRecording() * sgs.ArtifactDetectionSelection()" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " \n", - " \n", - " \n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "
\n", - "

merge_id

\n", - " \n", - "
\n", - "

recording_id

\n", - " \n", - "
\n", - "

sorting_id

\n", - " \n", - "
\n", - "

curation_id

\n", - " \n", - "
\n", - "

analysis_file_name

\n", - " name of the file\n", - "
\n", - "

object_id

\n", - " Object ID for the processed recording in NWB file\n", - "
485a4ddf-332d-35b5-3ad4-0561736c1844f15351b3-d8e9-49a1-a306-4f366f1ee53508a302b6-5505-40fa-b4d5-62162f8eef580mediumnwb20230802_JVBY43AQFF.nwbf639dd9a-fc4f-483e-a9c5-f487ecd11292
485a4ddf-332d-35b5-3ad4-0561736c1844f1427e00-2974-4301-b2ac-b4dc29277c5108a302b6-5505-40fa-b4d5-62162f8eef580mediumnwb20230802_3BWJOEGAO1.nwb8366dcfd-bd90-470f-b08c-183bd44dcd1f
485a4ddf-332d-35b5-3ad4-0561736c1844f07bc0b0-de6b-4424-8ef9-766213aaca2608a302b6-5505-40fa-b4d5-62162f8eef580mediumnwb20230802_GF6Z0P5KYV.nwb80c14292-a179-4c0f-9ff9-79016038ce95
485a4ddf-332d-35b5-3ad4-0561736c1844e59e77e9-dd41-4f58-a75b-17271b78c0d808a302b6-5505-40fa-b4d5-62162f8eef580mediumnwb20230802_8SB3X7Y9YA.nwbc880110b-1dbf-4cc1-99ff-3766ade81fed
485a4ddf-332d-35b5-3ad4-0561736c1844d14ae25a-2796-4203-ba0b-f28768536cbe08a302b6-5505-40fa-b4d5-62162f8eef580mediumnwb20230802_IG73IGEYPA.nwba3406f7e-1137-4c34-8715-e0323d074153
485a4ddf-332d-35b5-3ad4-0561736c1844b81f1ed9-fb2e-4f5c-93d8-d9cc0f11887508a302b6-5505-40fa-b4d5-62162f8eef580mediumnwb20230802_QBQBH0I2OO.nwb101d753a-72fb-47a4-8734-962f8ef4f477
485a4ddf-332d-35b5-3ad4-0561736c1844aff78f2f-2ba0-412a-95cc-447c3a2f468308a302b6-5505-40fa-b4d5-62162f8eef580mediumnwb20230802_42H3PR863Y.nwb6c5f3cd0-903a-42b5-ad68-261789bfd1a8
485a4ddf-332d-35b5-3ad4-0561736c1844a9b7cec0-1256-49cf-abf0-8c45fd15537908a302b6-5505-40fa-b4d5-62162f8eef580mediumnwb20230802_5GUFKQ59T6.nwb498d52a8-47d1-41c2-bd45-2ac796fce4cd
485a4ddf-332d-35b5-3ad4-0561736c1844a3f5b9e7-7c79-4eb4-b5ed-910191c615c208a302b6-5505-40fa-b4d5-62162f8eef580mediumnwb20230802_OQZ8C41NHS.nwbd49e9245-149c-4725-bd0f-d69b78e0a33a
485a4ddf-332d-35b5-3ad4-0561736c18449e332d82-1daf-4e92-bb50-12e4f943087508a302b6-5505-40fa-b4d5-62162f8eef580mediumnwb20230802_30PFKCH9HH.nwba45a4c86-d748-48f8-b406-4da381a74737
485a4ddf-332d-35b5-3ad4-0561736c18447f128981-6868-4976-ba20-248655dcac2108a302b6-5505-40fa-b4d5-62162f8eef580mediumnwb20230802_F9B938GB2N.nwbb06a3ec5-17a2-49a3-bd7f-475cb07081a0
485a4ddf-332d-35b5-3ad4-0561736c18447cc37209-7c28-443d-8f65-d8b01ca49a9a08a302b6-5505-40fa-b4d5-62162f8eef580mediumnwb20230802_XAQMO7WRC5.nwb38522acb-ba02-4fe1-b715-3c7485cca749
\n", - "

...

\n", - "

Total: 552

\n", - " " - ], - "text/plain": [ - "*merge_id *recording_id sorting_id curation_id analysis_file_ object_id \n", - "+------------+ +------------+ +------------+ +------------+ +------------+ +------------+\n", - "485a4ddf-332d- f15351b3-d8e9- 08a302b6-5505- 0 mediumnwb20230 f639dd9a-fc4f-\n", - "485a4ddf-332d- f1427e00-2974- 08a302b6-5505- 0 mediumnwb20230 8366dcfd-bd90-\n", - "485a4ddf-332d- f07bc0b0-de6b- 08a302b6-5505- 0 mediumnwb20230 80c14292-a179-\n", - "485a4ddf-332d- e59e77e9-dd41- 08a302b6-5505- 0 mediumnwb20230 c880110b-1dbf-\n", - "485a4ddf-332d- d14ae25a-2796- 08a302b6-5505- 0 mediumnwb20230 a3406f7e-1137-\n", - "485a4ddf-332d- b81f1ed9-fb2e- 08a302b6-5505- 0 mediumnwb20230 101d753a-72fb-\n", - "485a4ddf-332d- aff78f2f-2ba0- 08a302b6-5505- 0 mediumnwb20230 6c5f3cd0-903a-\n", - "485a4ddf-332d- a9b7cec0-1256- 08a302b6-5505- 0 mediumnwb20230 498d52a8-47d1-\n", - "485a4ddf-332d- a3f5b9e7-7c79- 08a302b6-5505- 0 mediumnwb20230 d49e9245-149c-\n", - "485a4ddf-332d- 9e332d82-1daf- 08a302b6-5505- 0 mediumnwb20230 a45a4c86-d748-\n", - "485a4ddf-332d- 7f128981-6868- 08a302b6-5505- 0 mediumnwb20230 b06a3ec5-17a2-\n", - "485a4ddf-332d- 7cc37209-7c28- 08a302b6-5505- 0 mediumnwb20230 38522acb-ba02-\n", - " ...\n", - " (Total: 552)" - ] - }, - "execution_count": 21, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "SpikeSortingOutput.CurationV1() * sgs.SpikeSortingRecording()" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "metadata": {}, - "outputs": [ - { - "ename": "DuplicateError", - "evalue": "(\"Duplicate entry 'mediumnwb20230802_.nwb-test_artifact_times' for key 'interval_list.PRIMARY'\", 'To ignore duplicate entries in insert, set skip_duplicates=True')", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mDuplicateError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[22], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[43mIntervalList\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43minsert1\u001b[49m\u001b[43m(\u001b[49m\u001b[43m{\u001b[49m\n\u001b[1;32m 2\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mnwb_file_name\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43mnwb_copy_file_name\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 3\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43minterval_list_name\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mtest_artifact_times\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 4\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mvalid_times\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43m[\u001b[49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 5\u001b[0m \u001b[43m}\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m~/miniconda3/envs/spyglass/lib/python3.9/site-packages/datajoint/table.py:337\u001b[0m, in \u001b[0;36mTable.insert1\u001b[0;34m(self, row, **kwargs)\u001b[0m\n\u001b[1;32m 330\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21minsert1\u001b[39m(\u001b[38;5;28mself\u001b[39m, row, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs):\n\u001b[1;32m 331\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 332\u001b[0m \u001b[38;5;124;03m Insert one data record into the table. For ``kwargs``, see ``insert()``.\u001b[39;00m\n\u001b[1;32m 333\u001b[0m \n\u001b[1;32m 334\u001b[0m \u001b[38;5;124;03m :param row: a numpy record, a dict-like object, or an ordered sequence to be inserted\u001b[39;00m\n\u001b[1;32m 335\u001b[0m \u001b[38;5;124;03m as one row.\u001b[39;00m\n\u001b[1;32m 336\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[0;32m--> 337\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43minsert\u001b[49m\u001b[43m(\u001b[49m\u001b[43m(\u001b[49m\u001b[43mrow\u001b[49m\u001b[43m,\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m~/miniconda3/envs/spyglass/lib/python3.9/site-packages/datajoint/table.py:453\u001b[0m, in \u001b[0;36mTable.insert\u001b[0;34m(self, rows, replace, skip_duplicates, ignore_extra_fields, allow_direct_insert)\u001b[0m\n\u001b[1;32m 449\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m err\u001b[38;5;241m.\u001b[39msuggest(\n\u001b[1;32m 450\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mTo ignore extra fields in insert, set ignore_extra_fields=True\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 451\u001b[0m )\n\u001b[1;32m 452\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m DuplicateError \u001b[38;5;28;01mas\u001b[39;00m err:\n\u001b[0;32m--> 453\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m err\u001b[38;5;241m.\u001b[39msuggest(\n\u001b[1;32m 454\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mTo ignore duplicate entries in insert, set skip_duplicates=True\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 455\u001b[0m )\n", - "\u001b[0;31mDuplicateError\u001b[0m: (\"Duplicate entry 'mediumnwb20230802_.nwb-test_artifact_times' for key 'interval_list.PRIMARY'\", 'To ignore duplicate entries in insert, set skip_duplicates=True')" - ] - } - ], - "source": [ - "IntervalList.insert1({\n", - " \"nwb_file_name\": nwb_copy_file_name,\n", - " \"interval_list_name\": \"test_artifact_times\",\n", - " \"valid_times\": [],\n", - "})" - ] - }, { "cell_type": "code", "execution_count": null, diff --git a/notebooks/py_scripts/43_Decoding_SortedSpikes.py b/notebooks/py_scripts/43_Decoding_SortedSpikes.py index 8f51cd4a7..d1449352c 100644 --- a/notebooks/py_scripts/43_Decoding_SortedSpikes.py +++ b/notebooks/py_scripts/43_Decoding_SortedSpikes.py @@ -108,7 +108,7 @@ # - # look at the sorting within the group we just made -SortedSpikesGroup.SortGroup & { +SortedSpikesGroup.Units & { "nwb_file_name": nwb_copy_file_name, "sorted_spikes_group_name": "test_group", "unit_filter_params_name": unit_filter_params_name, diff --git a/notebooks/py_scripts/51_MUA_Detection.py b/notebooks/py_scripts/51_MUA_Detection.py index 506217553..bc319ff82 100644 --- a/notebooks/py_scripts/51_MUA_Detection.py +++ b/notebooks/py_scripts/51_MUA_Detection.py @@ -13,158 +13,61 @@ # --- # + -from pathlib import Path import datajoint as dj +from pathlib import Path dj.config.load( Path("../dj_local_conf.json").absolute() ) # load config for database connection info + +from spyglass.mua.v1.mua import MuaEventsV1, MuaEventsParameters + # - -# # MUA Analysis and Detection -# -# NOTE: This notebook is a work in progress. It is not yet complete and may contain errors. +MuaEventsParameters() + +MuaEventsV1() # + -from spyglass.spikesorting.spikesorting_merge import SpikeSortingOutput -import spyglass.spikesorting.v1 as sgs - +from spyglass.position import PositionOutput nwb_copy_file_name = "mediumnwb20230802_.nwb" -sorter_keys = { +trodes_s_key = { "nwb_file_name": nwb_copy_file_name, - "sorter": "clusterless_thresholder", - "sorter_param_name": "default_clusterless", + "interval_list_name": "pos 0 valid times", + "trodes_pos_params_name": "single_led_upsampled", } -(sgs.SpikeSortingSelection & sorter_keys) * SpikeSortingOutput.CurationV1 - -# + -spikesorting_merge_ids = ( - (sgs.SpikeSortingSelection & sorter_keys) * SpikeSortingOutput.CurationV1 -).fetch("merge_id") - -spikesorting_merge_ids - -# + -from spyglass.spikesorting.unit_inclusion_merge import ( - ImportedUnitInclusionV1, - UnitInclusionOutput, -) - -ImportedUnitInclusionV1().insert_all_units(spikesorting_merge_ids) - -UnitInclusionOutput.ImportedUnitInclusionV1() & [ - {"spikesorting_merge_id": id} for id in spikesorting_merge_ids -] - -# + -from spyglass.spikesorting.unit_inclusion_merge import ( - ImportedUnitInclusionV1, - UnitInclusionOutput, -) - -ImportedUnitInclusionV1().insert_all_units(spikesorting_merge_ids) - -UnitInclusionOutput.ImportedUnitInclusionV1() & [ - {"spikesorting_merge_id": id} for id in spikesorting_merge_ids -] +pos_merge_id = (PositionOutput.TrodesPosV1 & trodes_s_key).fetch1("merge_id") +pos_merge_id # + -from spyglass.spikesorting.unit_inclusion_merge import SortedSpikesGroup - -unit_inclusion_merge_ids = ( - UnitInclusionOutput.ImportedUnitInclusionV1 - & [{"spikesorting_merge_id": id} for id in spikesorting_merge_ids] -).fetch("merge_id") - -SortedSpikesGroup().create_group( - group_name="test_group", - nwb_file_name=nwb_copy_file_name, - unit_inclusion_merge_ids=unit_inclusion_merge_ids, +from spyglass.spikesorting.analysis.v1.group import ( + SortedSpikesGroup, ) -group_key = { +sorted_spikes_group_key = { "nwb_file_name": nwb_copy_file_name, "sorted_spikes_group_name": "test_group", + "unit_filter_params_name": "default_exclusion", } -SortedSpikesGroup & group_key -# - - -SortedSpikesGroup.Units() & group_key - -# An example of how to get spike times - -spike_times = SortedSpikesGroup.fetch_spike_data(group_key) -spike_times[0] +SortedSpikesGroup & sorted_spikes_group_key # + -from spyglass.position import PositionOutput - -position_merge_id = ( - PositionOutput.TrodesPosV1 - & { - "nwb_file_name": nwb_copy_file_name, - "interval_list_name": "pos 0 valid times", - "trodes_pos_params_name": "default_decoding", - } -).fetch1("merge_id") - -position_info = ( - (PositionOutput & {"merge_id": position_merge_id}) - .fetch1_dataframe() - .dropna() -) -position_info - -# + -time_ind_slice = slice(63_000, 70_000) -time = position_info.index[time_ind_slice] - -SortedSpikesGroup.get_spike_indicator(group_key, time) - -# + -import matplotlib.pyplot as plt - -fig, axes = plt.subplots(2, 1, sharex=True, figsize=(15, 4)) -multiunit_firing_rate = SortedSpikesGroup.get_firing_rate( - group_key, time, multiunit=True -) -axes[0].plot( - time, - multiunit_firing_rate, -) -axes[0].set_ylabel("firing rate (Hz)") -axes[0].set_title("multiunit") -axes[1].fill_between( - time, position_info["speed"].iloc[time_ind_slice], color="lightgrey" -) -axes[1].set_ylabel("speed (cm/s)") -axes[1].set_xlabel("time (s)") - -# + -from spyglass.mua.v1.mua import MuaEventsParameters, MuaEventsV1 - -MuaEventsParameters().insert_default() -MuaEventsParameters() - -# + -selection_key = { +mua_key = { "mua_param_name": "default", - "nwb_file_name": nwb_copy_file_name, - "sorted_spikes_group_name": "test_group", - "pos_merge_id": position_merge_id, - "artifact_interval_list_name": "test_artifact_times", + **sorted_spikes_group_key, + "pos_merge_id": pos_merge_id, + "detection_interval": "pos 0 valid times", } -MuaEventsV1.populate(selection_key) +MuaEventsV1().populate(mua_key) +MuaEventsV1 & mua_key # - -MuaEventsV1 & selection_key - -mua_times = (MuaEventsV1 & selection_key).fetch1_dataframe() +mua_times = (MuaEventsV1 & mua_key).fetch1_dataframe() mua_times # + @@ -172,70 +75,37 @@ import numpy as np fig, axes = plt.subplots(2, 1, sharex=True, figsize=(15, 4)) +speed = MuaEventsV1.get_speed(mua_key).to_numpy() +time = speed.index.to_numpy() +multiunit_firing_rate = MuaEventsV1.get_firing_rate(mua_key, time) + +time_slice = slice( + np.searchsorted(time, mua_times.loc[10].start_time) - 1_000, + np.searchsorted(time, mua_times.loc[10].start_time) + 5_000, +) + axes[0].plot( - time, - multiunit_firing_rate, + time[time_slice], + multiunit_firing_rate[time_slice], + color="black", ) axes[0].set_ylabel("firing rate (Hz)") axes[0].set_title("multiunit") -axes[1].fill_between( - time, position_info["speed"].iloc[time_ind_slice], color="lightgrey" -) +axes[1].fill_between(time[time_slice], speed[time_slice], color="lightgrey") axes[1].set_ylabel("speed (cm/s)") axes[1].set_xlabel("time (s)") -in_bounds = np.logical_and( - mua_times.start_time >= time[0], mua_times.end_time <= time[-1] -) - -for mua_time in mua_times.loc[in_bounds].itertuples(): - axes[0].axvspan( - mua_time.start_time, mua_time.end_time, color="red", alpha=0.3 +for id, mua_time in mua_times.loc[ + np.logical_and( + mua_times["start_time"] > time[time_slice].min(), + mua_times["end_time"] < time[time_slice].max(), ) - axes[1].axvspan( - mua_time.start_time, mua_time.end_time, color="red", alpha=0.3 +].iterrows(): + axes[0].axvspan( + mua_time["start_time"], mua_time["end_time"], color="red", alpha=0.5 ) -axes[1].set_ylim((0, 80)) -axes[1].axhline(4, color="black", linestyle="--") -axes[1].set_xlim((time[0], time[-1])) - -# + -from spyglass.common import IntervalList - -IntervalList() & { - "nwb_file_name": nwb_copy_file_name, - "pipeline": "spikesorting_artifact_v1", -} # - -( - sgs.ArtifactDetectionParameters - * sgs.SpikeSortingRecording - * sgs.ArtifactDetectionSelection -) - -SpikeSortingOutput.CurationV1() * ( - sgs.ArtifactDetectionParameters - * sgs.SpikeSortingRecording - * sgs.ArtifactDetectionSelection -) - -( - IntervalList() - & { - "nwb_file_name": nwb_copy_file_name, - "pipeline": "spikesorting_artifact_v1", - } -).proj(artifact_id="interval_list_name") - -sgs.SpikeSortingRecording() * sgs.ArtifactDetectionSelection() - -SpikeSortingOutput.CurationV1() * sgs.SpikeSortingRecording() - -IntervalList.insert1( - { - "nwb_file_name": nwb_copy_file_name, - "interval_list_name": "test_artifact_times", - "valid_times": [], - } +(MuaEventsV1 & mua_key).create_figurl( + zscore_mua=True, ) diff --git a/src/spyglass/mua/__init__.py b/src/spyglass/mua/__init__.py index e69de29bb..948eabee4 100644 --- a/src/spyglass/mua/__init__.py +++ b/src/spyglass/mua/__init__.py @@ -0,0 +1 @@ +from spyglass.mua.v1.mua import MuaEventsParameters, MuaEventsV1 # noqa: F401 diff --git a/src/spyglass/mua/v1/__init__.py b/src/spyglass/mua/v1/__init__.py index e69de29bb..948eabee4 100644 --- a/src/spyglass/mua/v1/__init__.py +++ b/src/spyglass/mua/v1/__init__.py @@ -0,0 +1 @@ +from spyglass.mua.v1.mua import MuaEventsParameters, MuaEventsV1 # noqa: F401 diff --git a/src/spyglass/mua/v1/mua.py b/src/spyglass/mua/v1/mua.py index 86c93de2e..c31320015 100644 --- a/src/spyglass/mua/v1/mua.py +++ b/src/spyglass/mua/v1/mua.py @@ -1,6 +1,8 @@ import datajoint as dj import numpy as np +import sortingview.views as vv from ripple_detection import multiunit_HSE_detector +from scipy.stats import zscore from spyglass.common.common_interval import IntervalList from spyglass.common.common_nwbfile import AnalysisNwbfile @@ -46,22 +48,16 @@ class MuaEventsV1(SpyglassMixin, dj.Computed): -> MuaEventsParameters -> SortedSpikesGroup -> PositionOutput.proj(pos_merge_id='merge_id') - -> IntervalList.proj(artifact_interval_list_name='interval_list_name') # exclude artifact times + -> IntervalList.proj(detection_interval='interval_list_name') --- -> AnalysisNwbfile mua_times_object_id : varchar(40) """ def make(self, key): - # TODO: exclude artifact times - position_info = ( - PositionOutput & {"merge_id": key["pos_merge_id"]} - ).fetch1_dataframe() - speed_name = ( - "speed" if "speed" in position_info.columns else "head_speed" - ) - speed = position_info[speed_name].to_numpy() - time = position_info.index.to_numpy() + speed = self.get_speed(key) + time = speed.index.to_numpy() + speed = speed.to_numpy() spike_indicator = SortedSpikesGroup.get_spike_indicator(key, time) spike_indicator = spike_indicator.sum(axis=1, keepdims=True) @@ -70,21 +66,20 @@ def make(self, key): mua_params = (MuaEventsParameters & key).fetch1("mua_param_dict") - # Exclude artifact times - # Alternatively could set to NaN and leave them out of the firing rate calculation - # in the multiunit_HSE_detector function - artifact_key = { - "nwb_file_name": key["nwb_file_name"], - "interval_list_name": key["artifact_interval_list_name"], - } - artifact_times = (IntervalList & artifact_key).fetch1("valid_times") - mean_n_spikes = np.mean(spike_indicator) - for artifact_time in artifact_times: - spike_indicator[ - np.logical_and( - time >= artifact_time.start, time <= artifact_time.stop - ) - ] = mean_n_spikes + valid_times = ( + IntervalList + & { + "nwb_file_name": key["nwb_file_name"], + "interval_list_name": key["detection_interval"], + } + ).fetch1("valid_times") + mask = np.zeros_like(time, dtype=bool) + for start, end in valid_times: + mask = mask | ((time >= start) & (time <= end)) + + time = time[mask] + speed = speed[mask] + spike_indicator = spike_indicator[mask] mua_times = multiunit_HSE_detector( time, spike_indicator, speed, sampling_frequency, **mua_params @@ -110,3 +105,99 @@ def fetch1_dataframe(self): def fetch_dataframe(self): return [data["mua_times"] for data in self.fetch_nwb()] + + @classmethod + def get_firing_rate(cls, key, time): + return SortedSpikesGroup.get_firing_rate(key, time, multiunit=True) + + @staticmethod + def get_speed(key): + position_info = ( + PositionOutput & {"merge_id": key["pos_merge_id"]} + ).fetch1_dataframe() + speed_name = ( + "speed" if "speed" in position_info.columns else "head_speed" + ) + return position_info[speed_name] + + def create_figurl( + self, + zscore_mua=True, + mua_times_color="red", + speed_color="black", + mua_color="black", + view_height=800, + ): + key = self.fetch1("KEY") + speed = self.get_speed(key) + time = speed.index.to_numpy() + multiunit_firing_rate = self.get_firing_rate(key, time) + if zscore_mua: + multiunit_firing_rate = zscore(multiunit_firing_rate) + + mua_times = self.fetch1_dataframe() + + multiunit_firing_rate_view = vv.TimeseriesGraph() + multiunit_firing_rate_view.add_interval_series( + name="MUA Events", + t_start=mua_times.start_time.to_numpy(), + t_end=mua_times.end_time.to_numpy(), + color=mua_times_color, + ) + name = "Z-Scored Multiunit Rate" if zscore_mua else "Multiunit Rate" + multiunit_firing_rate_view.add_line_series( + name=name, + t=np.asarray(time), + y=np.asarray(multiunit_firing_rate, dtype=np.float32), + color=mua_color, + width=1, + ) + if zscore_mua: + mua_params = (MuaEventsParameters & key).fetch1("mua_param_dict") + zscore_threshold = mua_params.get("zscore_threshold") + multiunit_firing_rate_view.add_line_series( + name="Z-Score Threshold", + t=np.asarray(time).squeeze(), + y=np.ones_like( + multiunit_firing_rate, dtype=np.float32 + ).squeeze() + * zscore_threshold, + color=mua_times_color, + width=1, + ) + speed_view = vv.TimeseriesGraph().add_line_series( + name="Speed [cm/s]", + t=np.asarray(time), + y=np.asarray(speed, dtype=np.float32), + color=speed_color, + width=1, + ) + speed_view.add_interval_series( + name="MUA Events", + t_start=mua_times.start_time.to_numpy(), + t_end=mua_times.end_time.to_numpy(), + color=mua_times_color, + ) + vertical_panel_content = [ + vv.LayoutItem( + multiunit_firing_rate_view, stretch=2, title="Multiunit" + ), + vv.LayoutItem(speed_view, stretch=2, title="Speed"), + ] + + view = vv.Box( + direction="horizontal", + show_titles=True, + height=view_height, + items=[ + vv.LayoutItem( + vv.Box( + direction="vertical", + show_titles=True, + items=vertical_panel_content, + ) + ), + ], + ) + + return view.url(label="Multiunit Detection") diff --git a/src/spyglass/ripple/v1/ripple.py b/src/spyglass/ripple/v1/ripple.py index 38618f301..336e07799 100644 --- a/src/spyglass/ripple/v1/ripple.py +++ b/src/spyglass/ripple/v1/ripple.py @@ -2,8 +2,10 @@ import matplotlib.pyplot as plt import numpy as np import pandas as pd +import sortingview.views as vv from ripple_detection import Karlsson_ripple_detector, Kay_ripple_detector from ripple_detection.core import gaussian_smooth, get_envelope +from scipy.stats import zscore from spyglass.common.common_interval import ( IntervalList, @@ -11,6 +13,7 @@ ) from spyglass.common.common_nwbfile import AnalysisNwbfile from spyglass.lfp.analysis.v1.lfp_band import LFPBandSelection, LFPBandV1 +from spyglass.lfp.lfp_merge import LFPOutput from spyglass.position import PositionOutput from spyglass.utils import SpyglassMixin, logger from spyglass.utils.nwb_helper_fn import get_electrode_indices @@ -155,9 +158,7 @@ class RippleTimesV1(SpyglassMixin, dj.Computed): """ def make(self, key): - nwb_file_name, interval_list_name = (LFPBandV1 & key).fetch1( - "nwb_file_name", "target_interval_list_name" - ) + nwb_file_name = (LFPBandV1 & key).fetch1("nwb_file_name") logger.info(f"Computing ripple times for: {key}") ripple_params = ( @@ -171,9 +172,7 @@ def make(self, key): speed, interval_ripple_lfps, sampling_frequency, - ) = self.get_ripple_lfps_and_position_info( - key, nwb_file_name, interval_list_name - ) + ) = self.get_ripple_lfps_and_position_info(key) ripple_times = RIPPLE_DETECTION_ALGORITHMS[ripple_detection_algorithm]( time=np.asarray(interval_ripple_lfps.index), filtered_lfps=np.asarray(interval_ripple_lfps), @@ -203,9 +202,7 @@ def fetch_dataframe(self): return [data["ripple_times"] for data in self.fetch_nwb()] @staticmethod - def get_ripple_lfps_and_position_info( - key, nwb_file_name, interval_list_name - ): + def get_ripple_lfps_and_position_info(key): ripple_params = ( RippleParameters & {"ripple_param_name": key["ripple_param_name"]} ).fetch1("ripple_param_dict") @@ -219,7 +216,7 @@ def get_ripple_lfps_and_position_info( # warn/validate that there is only one wire per electrode ripple_lfp_nwb = (LFPBandV1 & key).fetch_nwb()[0] ripple_lfp_electrodes = ripple_lfp_nwb["lfp_band"].electrodes.data[:] - elec_mask = np.full_like(ripple_lfp_electrodes, 0, dtype=bool) + elec_mask = np.zeros_like(ripple_lfp_electrodes, dtype=bool) valid_elecs = [ elec for elec in electrode_keys if elec in ripple_lfp_electrodes ] @@ -230,16 +227,14 @@ def get_ripple_lfps_and_position_info( ripple_lfp = pd.DataFrame( ripple_lfp_nwb["lfp_band"].data, index=pd.Index(ripple_lfp_nwb["lfp_band"].timestamps, name="time"), - ) + ).loc[:, elec_mask] sampling_frequency = ripple_lfp_nwb["lfp_band_sampling_rate"] - ripple_lfp = ripple_lfp.loc[:, elec_mask] - position_valid_times = ( IntervalList & { - "nwb_file_name": nwb_file_name, - "interval_list_name": interval_list_name, + "nwb_file_name": key["nwb_file_name"], + "interval_list_name": key["target_interval_list_name"], } ).fetch1("valid_times") position_info = ( @@ -366,3 +361,130 @@ def plot_ripple( ) ax.set_ylabel("LFPs") ax.set_xlabel("Time [s]") + + def create_figurl( + self, + zscore_ripple=False, + ripple_times_color="red", + consensus_color="black", + speed_color="black", + view_height=800, + use_ripple_filtered_lfps=False, + lfp_offset=1, + lfp_channel_ind=None, + ): + + ripple_times = self.fetch1_dataframe() + + def _add_ripple_times( + view, + ripple_times=ripple_times, + ripple_times_color=ripple_times_color, + ): + return view.add_interval_series( + name="Ripple Events", + t_start=ripple_times.start_time.to_numpy(), + t_end=ripple_times.end_time.to_numpy(), + color=ripple_times_color, + ) + + key = self.fetch1("KEY") + ( + speed, + ripple_filtered_lfps, + sampling_frequency, + ) = self.get_ripple_lfps_and_position_info(key) + ripple_consensus_trace = self.get_Kay_ripple_consensus_trace( + ripple_filtered_lfps, sampling_frequency + ) + + if zscore_ripple: + ripple_consensus_trace = zscore(ripple_consensus_trace) + + consensus_view = _add_ripple_times(vv.TimeseriesGraph()) + consensus_name = ( + "Z-Scored Consensus Trace" if zscore_ripple else "Consensus Trace" + ) + consensus_view.add_line_series( + name=consensus_name, + t=np.asarray(ripple_consensus_trace.index).squeeze(), + y=np.asarray(ripple_consensus_trace, dtype=np.float32).squeeze(), + color=consensus_color, + width=1, + ) + if zscore_ripple: + ripple_params = ( + RippleParameters + & {"ripple_param_name": key["ripple_param_name"]} + ).fetch1("ripple_param_dict") + + zscore_threshold = ripple_params["ripple_detection_params"].get( + "zscore_threshold" + ) + if zscore_threshold is not None: + consensus_view.add_line_series( + name="Z-Score Threshold", + t=np.asarray(ripple_consensus_trace.index).squeeze(), + y=np.ones_like( + ripple_consensus_trace, dtype=np.float32 + ).squeeze() + * zscore_threshold, + color=ripple_times_color, + width=1, + ) + + if use_ripple_filtered_lfps: + interval_ripple_lfps = ripple_filtered_lfps + else: + lfp_merge_id = (LFPBandSelection & key).fetch1("lfp_merge_id") + lfp_df = (LFPOutput & {"merge_id": lfp_merge_id}).fetch1_dataframe() + interval_ripple_lfps = lfp_df.loc[speed.index[0] : speed.index[-1]] + if lfp_channel_ind is not None: + if lfp_channel_ind.max() >= interval_ripple_lfps.shape[1]: + raise ValueError( + "lfp_channel_ind is out of range for the number of LFPs" + ) + interval_ripple_lfps = interval_ripple_lfps.iloc[:, lfp_channel_ind] + + lfp_view = _add_ripple_times(vv.TimeseriesGraph()) + max_lfp_value = interval_ripple_lfps.to_numpy().max() + lfp_offset *= max_lfp_value + + for i, lfp in enumerate(interval_ripple_lfps.to_numpy().T): + lfp_view.add_line_series( + name=f"LFP {i}", + t=np.asarray(interval_ripple_lfps.index).squeeze(), + y=np.asarray(lfp + lfp_offset * i, dtype=np.int16).squeeze(), + color="black", + width=1, + ) + speed_view = _add_ripple_times(vv.TimeseriesGraph()) + speed_view.add_line_series( + name="Speed [cm/s]", + t=np.asarray(speed.index).squeeze(), + y=np.asarray(speed, dtype=np.float32).squeeze(), + color=speed_color, + width=1, + ) + vertical_panel_content = [ + vv.LayoutItem(consensus_view, stretch=2, title="Consensus"), + vv.LayoutItem(lfp_view, stretch=8, title="LFPs"), + vv.LayoutItem(speed_view, stretch=2, title="Speed"), + ] + + view = vv.Box( + direction="horizontal", + show_titles=True, + height=view_height, + items=[ + vv.LayoutItem( + vv.Box( + direction="vertical", + show_titles=True, + items=vertical_panel_content, + ) + ), + ], + ) + + return view.url(label="Ripple Detection") diff --git a/src/spyglass/spikesorting/analysis/v1/group.py b/src/spyglass/spikesorting/analysis/v1/group.py index 0f52fdd0e..573697f1a 100644 --- a/src/spyglass/spikesorting/analysis/v1/group.py +++ b/src/spyglass/spikesorting/analysis/v1/group.py @@ -50,7 +50,7 @@ class SortedSpikesGroup(SpyglassMixin, dj.Manual): sorted_spikes_group_name: varchar(80) """ - class SortGroup(SpyglassMixin, dj.Part): + class Units(SpyglassMixin, dj.Part): definition = """ -> master -> SpikeSortingOutput.proj(spikesorting_merge_id='merge_id') @@ -74,7 +74,7 @@ def create_group( group_key, skip_duplicates=True, ) - self.SortGroup.insert(parts_insert) + self.Units.insert(parts_insert, skip_duplicates=True) @staticmethod def filter_units( @@ -88,16 +88,19 @@ def filter_units( include_labels = np.unique(include_labels) exclude_labels = np.unique(exclude_labels) + if include_labels.size == 0 and exclude_labels.size == 0: + # if no labels are provided, include all units + return np.ones(len(labels), dtype=bool) + include_mask = np.zeros(len(labels), dtype=bool) for ind, unit_labels in enumerate(labels): if isinstance(unit_labels, str): unit_labels = [unit_labels] - if ( - include_labels - and not np.isin(include_labels, unit_labels).any() + if np.all(~np.isin(unit_labels, include_labels)) or np.any( + np.isin(unit_labels, exclude_labels) ): - continue - if np.isin(exclude_labels, unit_labels).any(): + # if the unit does not have any of the include labels + # or has any of the exclude labels, skip continue include_mask[ind] = True return include_mask @@ -107,7 +110,7 @@ def fetch_spike_data(key, time_slice=None): # get merge_ids for SpikeSortingOutput merge_ids = ( ( - SortedSpikesGroup.SortGroup + SortedSpikesGroup.Units & { "nwb_file_name": key["nwb_file_name"], "sorted_spikes_group_name": key["sorted_spikes_group_name"],