stim response
This commit is contained in:
parent
a15c1396c6
commit
7f044e9b5b
|
@ -1,7 +1,7 @@
|
|||
registered: '2019-10-03T08:37:34'
|
||||
data:
|
||||
figures: figures
|
||||
statistics: statistics
|
||||
notebook: 10-calculate-stimulus-response.ipynb
|
||||
html: 10-calculate-stimulus-response.html
|
||||
results: results.csv
|
||||
registered: '2019-10-03T08:37:34'
|
||||
data:
|
||||
figures: figures
|
||||
statistics: statistics
|
||||
notebook: 10-calculate-stimulus-response.ipynb
|
||||
html: 10-calculate-stimulus-response.html
|
||||
results: results.csv
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,280 +1,274 @@
|
|||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 1,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"%load_ext autoreload\n",
|
||||
"%autoreload 2"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 2,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stderr",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"08:31:41 [I] klustakwik KlustaKwik2 version 0.2.6\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"import matplotlib.pyplot as plt\n",
|
||||
"%matplotlib inline\n",
|
||||
"import spatial_maps as sp\n",
|
||||
"import septum_mec.analysis.data_processing as dp\n",
|
||||
"import septum_mec.analysis.registration\n",
|
||||
"import expipe\n",
|
||||
"import os\n",
|
||||
"import pathlib\n",
|
||||
"import numpy as np\n",
|
||||
"import exdir\n",
|
||||
"import pandas as pd\n",
|
||||
"import optogenetics as og\n",
|
||||
"import quantities as pq\n",
|
||||
"import shutil\n",
|
||||
"from distutils.dir_util import copy_tree\n",
|
||||
"\n",
|
||||
"from septum_mec.analysis.stimulus_response import stimulus_response_latency, compute_response\n",
|
||||
"\n",
|
||||
"from tqdm import tqdm_notebook as tqdm\n",
|
||||
"from tqdm._tqdm_notebook import tqdm_notebook\n",
|
||||
"tqdm_notebook.pandas()"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 3,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"std_gaussian_kde = 0.04\n",
|
||||
"window_size = 0.03"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 4,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"data_loader = dp.Data()\n",
|
||||
"actions = data_loader.actions\n",
|
||||
"project = data_loader.project"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 5,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"output = pathlib.Path('output/stimulus-response')\n",
|
||||
"(output / 'figures').mkdir(parents=True, exist_ok=True)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 6,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"identify_neurons = actions['identify-neurons']\n",
|
||||
"units = pd.read_csv(identify_neurons.data_path('units'))"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 7,
|
||||
"metadata": {
|
||||
"scrolled": false
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"def process(row):\n",
|
||||
" \n",
|
||||
" action_id = row['action']\n",
|
||||
" channel_id = int(row['channel_group'])\n",
|
||||
" unit_id = int(row['unit_name']) \n",
|
||||
" \n",
|
||||
" spike_times = data_loader.spike_train(action_id, channel_id, unit_id)\n",
|
||||
" \n",
|
||||
" spike_times = np.array(spike_times)\n",
|
||||
" \n",
|
||||
" stim_times = data_loader.stim_times(action_id)\n",
|
||||
" \n",
|
||||
" nan_series = pd.Series({\n",
|
||||
" 't_e_peak': np.nan,\n",
|
||||
" 'p_e_peak': np.nan,\n",
|
||||
" 't_i_peak': np.nan,\n",
|
||||
" 'p_i_peak': np.nan\n",
|
||||
" })\n",
|
||||
" \n",
|
||||
" if stim_times is None:\n",
|
||||
" return nan_series\n",
|
||||
" \n",
|
||||
" stim_times = np.array(stim_times)\n",
|
||||
" \n",
|
||||
" times, spikes, kernel, p_e, p_i = stimulus_response_latency(\n",
|
||||
" spike_times, stim_times, window_size, std_gaussian_kde)\n",
|
||||
" \n",
|
||||
" # if no spikes detected after stimulus nan is returned\n",
|
||||
" if all(np.isnan([p_e, p_i])):\n",
|
||||
" return nan_series\n",
|
||||
" \n",
|
||||
" t_e_peak, p_e_peak, t_i_peak, p_i_peak = compute_response(\n",
|
||||
" spike_times, stim_times, times, kernel, p_e, p_i)\n",
|
||||
"\n",
|
||||
" return pd.Series({\n",
|
||||
" 't_e_peak': t_e_peak,\n",
|
||||
" 'p_e_peak': p_e_peak,\n",
|
||||
" 't_i_peak': t_i_peak,\n",
|
||||
" 'p_i_peak': p_i_peak\n",
|
||||
" })\n",
|
||||
"\n",
|
||||
"\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"application/vnd.jupyter.widget-view+json": {
|
||||
"model_id": "d3f0400c75c745c789907bd763bf2833",
|
||||
"version_major": 2,
|
||||
"version_minor": 0
|
||||
},
|
||||
"text/plain": [
|
||||
"HBox(children=(IntProgress(value=0, max=1281), HTML(value='')))"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
},
|
||||
{
|
||||
"name": "stderr",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"/home/mikkel/apps/expipe-project/septum-mec/septum_mec/analysis/stimulus_response.py:33: RuntimeWarning: invalid value encountered in less\n",
|
||||
" if any(times[idxs_i] < te_peak):\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"results = units.merge(\n",
|
||||
" units.progress_apply(process, axis=1), \n",
|
||||
" left_index=True, right_index=True)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {
|
||||
"scrolled": false
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"results.loc[:, ['t_e_peak', 't_i_peak', 'p_e_peak', 'p_i_peak']].hist()\n",
|
||||
"plt.gcf().savefig(output / 'figures' / 'summary_histogram.png')"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"# Save to expipe"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"action = project.require_action(\"stimulus-response\")"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"action.modules['parameters'] = {\n",
|
||||
" 'window_size': window_size,\n",
|
||||
" 'std_gaussian_kde': std_gaussian_kde\n",
|
||||
"}"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"action.data['results'] = 'results.csv'\n",
|
||||
"results.to_csv(action.data_path('results'), index=False)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"stuff = {\n",
|
||||
" \"figures\": \"figures\",\n",
|
||||
"# \"statistics\": \"statistics\"\n",
|
||||
"}\n",
|
||||
"\n",
|
||||
"for key, value in stuff.items():\n",
|
||||
" action.data[key] = value\n",
|
||||
" data_path = action.data_path(key)\n",
|
||||
" data_path.parent.mkdir(exist_ok=True, parents=True)\n",
|
||||
" source = output / value\n",
|
||||
" if source.is_file():\n",
|
||||
" shutil.copy(source, data_path)\n",
|
||||
" else:\n",
|
||||
" copy_tree(str(source), str(data_path))"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"septum_mec.analysis.registration.store_notebook(action, \"10-calculate-stimulus-response.ipynb\")"
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "Python 3",
|
||||
"language": "python",
|
||||
"name": "python3"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": {
|
||||
"name": "ipython",
|
||||
"version": 3
|
||||
},
|
||||
"file_extension": ".py",
|
||||
"mimetype": "text/x-python",
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.6.8"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 2
|
||||
}
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 1,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"%load_ext autoreload\n",
|
||||
"%autoreload 2"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 2,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stderr",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"11:36:02 [I] klustakwik KlustaKwik2 version 0.2.6\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"import matplotlib.pyplot as plt\n",
|
||||
"%matplotlib inline\n",
|
||||
"import spatial_maps as sp\n",
|
||||
"import septum_mec.analysis.data_processing as dp\n",
|
||||
"import septum_mec.analysis.registration\n",
|
||||
"import expipe\n",
|
||||
"import os\n",
|
||||
"import pathlib\n",
|
||||
"import numpy as np\n",
|
||||
"import exdir\n",
|
||||
"import pandas as pd\n",
|
||||
"import optogenetics as og\n",
|
||||
"import quantities as pq\n",
|
||||
"import shutil\n",
|
||||
"from distutils.dir_util import copy_tree\n",
|
||||
"\n",
|
||||
"from septum_mec.analysis.stimulus_response import stimulus_response_latency, compute_response\n",
|
||||
"\n",
|
||||
"from tqdm import tqdm_notebook as tqdm\n",
|
||||
"from tqdm._tqdm_notebook import tqdm_notebook\n",
|
||||
"tqdm_notebook.pandas()"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 3,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"std_gaussian_kde = 0.04\n",
|
||||
"window_size = 0.03"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 4,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"data_loader = dp.Data()\n",
|
||||
"actions = data_loader.actions\n",
|
||||
"project = data_loader.project"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 5,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"output = pathlib.Path('output/stimulus-response')\n",
|
||||
"(output / 'figures').mkdir(parents=True, exist_ok=True)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 6,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"identify_neurons = actions['identify-neurons']\n",
|
||||
"units = pd.read_csv(identify_neurons.data_path('units'))"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 7,
|
||||
"metadata": {
|
||||
"scrolled": false
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"def process(row):\n",
|
||||
" \n",
|
||||
" action_id = row['action']\n",
|
||||
" channel_id = int(row['channel_group'])\n",
|
||||
" unit_id = int(row['unit_name']) \n",
|
||||
" \n",
|
||||
" spike_times = data_loader.spike_train(action_id, channel_id, unit_id)\n",
|
||||
" \n",
|
||||
" spike_times = np.array(spike_times)\n",
|
||||
" \n",
|
||||
" stim_times = data_loader.stim_times(action_id)\n",
|
||||
" \n",
|
||||
" nan_series = pd.Series({\n",
|
||||
" 't_e_peak': np.nan,\n",
|
||||
" 'p_e_peak': np.nan,\n",
|
||||
" 't_i_peak': np.nan,\n",
|
||||
" 'p_i_peak': np.nan\n",
|
||||
" })\n",
|
||||
" \n",
|
||||
" if stim_times is None:\n",
|
||||
" return nan_series\n",
|
||||
" \n",
|
||||
" stim_times = np.array(stim_times)\n",
|
||||
" \n",
|
||||
" times, spikes, kernel, p_e, p_i = stimulus_response_latency(\n",
|
||||
" spike_times, stim_times, window_size, std_gaussian_kde)\n",
|
||||
" \n",
|
||||
" # if no spikes detected after stimulus nan is returned\n",
|
||||
" if all(np.isnan([p_e, p_i])):\n",
|
||||
" return nan_series\n",
|
||||
" \n",
|
||||
" t_e_peak, p_e_peak, t_i_peak, p_i_peak = compute_response(\n",
|
||||
" spike_times, stim_times, times, kernel, p_e, p_i)\n",
|
||||
"\n",
|
||||
" return pd.Series({\n",
|
||||
" 't_e_peak': t_e_peak,\n",
|
||||
" 'p_e_peak': p_e_peak,\n",
|
||||
" 't_i_peak': t_i_peak,\n",
|
||||
" 'p_i_peak': p_i_peak\n",
|
||||
" })\n",
|
||||
"\n",
|
||||
"\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"application/vnd.jupyter.widget-view+json": {
|
||||
"model_id": "476c31da67274b2396ed3f2ec54a8344",
|
||||
"version_major": 2,
|
||||
"version_minor": 0
|
||||
},
|
||||
"text/plain": [
|
||||
"HBox(children=(IntProgress(value=0, max=1298), HTML(value='')))"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
},
|
||||
{
|
||||
"name": "stderr",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"/home/mikkel/apps/expipe-project/septum-mec/septum_mec/analysis/stimulus_response.py:33: RuntimeWarning: invalid value encountered in less\n",
|
||||
" if any(times[idxs_i] < te_peak):\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"results = units.merge(\n",
|
||||
" units.progress_apply(process, axis=1), \n",
|
||||
" left_index=True, right_index=True)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {
|
||||
"scrolled": false
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"results.loc[:, ['t_e_peak', 't_i_peak', 'p_e_peak', 'p_i_peak']].hist()\n",
|
||||
"plt.gcf().savefig(output / 'figures' / 'summary_histogram.png')"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"# Save to expipe"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"action = project.require_action(\"stimulus-response\")"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"action.modules['parameters'] = {\n",
|
||||
" 'window_size': window_size,\n",
|
||||
" 'std_gaussian_kde': std_gaussian_kde\n",
|
||||
"}"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"action.data['results'] = 'results.csv'\n",
|
||||
"results.to_csv(action.data_path('results'), index=False)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"copy_tree(output, str(action.data_path()))"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"septum_mec.analysis.registration.store_notebook(action, \"10-calculate-stimulus-response.ipynb\")"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "Python 3",
|
||||
"language": "python",
|
||||
"name": "python3"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": {
|
||||
"name": "ipython",
|
||||
"version": 3
|
||||
},
|
||||
"file_extension": ".py",
|
||||
"mimetype": "text/x-python",
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.6.8"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 2
|
||||
}
|
||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB |
File diff suppressed because it is too large
Load Diff
|
@ -1,2 +1,2 @@
|
|||
window_size: 0.03
|
||||
std_gaussian_kde: 0.04
|
||||
window_size: 0.03
|
||||
std_gaussian_kde: 0.04
|
||||
|
|
Loading…
Reference in New Issue