{ "cells": [ { "cell_type": "markdown", "metadata": { "toc": true }, "source": [ "

Table of Contents

\n", "
" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "setting sweep duration to 75 msec\n" ] } ], "source": [ "#!/usr/bin/env python\n", "# coding: utf-8\n", "\n", "#%%\n", "import platform\n", "import sys\n", "os_name = platform.system()\n", "if os_name == 'Darwin':\n", " sys.path.append('/Users/kperks/mnt/engram/scripts/Python/Analysis/')\n", "if os_name == 'Linux':\n", " sys.path.append('/mnt/engram/scripts/Python/Analysis/')\n", "from ClassDef_AmplitudeShift_Stable import AmpShift_Stable\n", "\n", "from brian2 import *\n", "import sympy\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "import pandas as pd\n", "from pathlib import Path\n", "import seaborn as sns\n", "from scipy import signal\n", "from scipy import optimize\n", "from scipy import stats\n", "import pickle\n", "\n", "#%%\n", "# print('changing to data_processed folder and defining folders used in script')\n", "# chdir('/Users/kperks/mnt/engram/spikedata/data_processed/')\n", "\n", "exptpath = Path.cwd().resolve().parents[0] #assumes running notebook from /data_processed\n", "data_folder = exptpath / 'data_raw' \n", "# figure_folder = exptpath / 'data_processed' / 'Figures_GRC_properties' / 'Unsubtracted_CvsU'\n", "df_folder = exptpath / 'data_processed' / 'GRC_properties_Meta'\n", "\n", "#%%\n", "print('setting sweep duration to 75 msec')\n", "sweepdur = 0.075" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "defining functions\n" ] } ], "source": [ "#%%\n", "print('defining functions')\n", "def calc_peaks (xtime,sweeps, order, min_peakt, t0_offset,threshold_h,dt):\n", "\tmin_peakt = min_peakt+t0_offset\n", "\tR = np.mean(sweeps,1)-np.mean(sweeps,1)[0]\n", "\n", "\tnsamp=int(order/dt) #the window of comparison in nsamp for order; 2msec seemed good\n", "\tipsp_ = signal.argrelextrema(R,np.less_equal,order = nsamp)[0]\n", "\tepsp_ = signal.argrelextrema(R,np.greater_equal,order = nsamp)[0]\n", "\n", "\tepsp_ = epsp_[np.where((epsp_*dt)>min_peakt)[0]]\n", "\tipsp_ = ipsp_[np.where((ipsp_*dt)>min_peakt)[0]]\n", "\n", "\tepsp = []\n", "\tmeasure = epsp_\n", "\tcompare = ipsp_\n", "\tfor i in measure:\n", "\t\tif len(compare[compare0:\n", "\t\t\tlb = np.max(compare[comparei])>0:\n", "\t\t\trb = np.min(compare[compare>i])\n", "\t\telif len(compare[compare>i])==0:\n", "\t\t\trb = len(R)-1\n", "\t\tmin_height = np.min([abs(R[i]-R[lb]),abs(R[i]-R[rb])])\n", "\t\tif min_height>threshold_h:\n", "\t\t\tepsp.append(i)\n", "\tif len(epsp)>0:\n", "\t\tepsp = np.min(epsp)\n", "\telif len(epsp)==0:\n", "\t\tepsp = np.NaN\n", "\n", "\tipsp = []\n", "\tmeasure = ipsp_\n", "\tcompare = epsp_\n", "\tfor i in measure:\n", "\t\tif len(compare[compare0:\n", "\t\t\tlb = np.max(compare[comparei])>0:\n", "\t\t\trb = np.min(compare[compare>i])\n", "\t\telif len(compare[compare>i])==0:\n", "\t\t\trb = len(R)-1\n", "\t\tmin_height = np.min([abs(R[i]-R[lb]),abs(R[i]-R[rb])])\n", "\t\tif min_height>threshold_h:\n", "\t\t\tipsp.append(i)\n", "\tif len(ipsp)>0:\n", "\t\tipsp = np.min(ipsp)\n", "\telif len(ipsp)==0:\n", "\t\tipsp = np.NaN\n", "\n", "\tR_filt = signal.medfilt(R,[11])\n", "\ty = signal.medfilt(np.concatenate([[0],np.diff(R_filt)]),[25]) #-threshold_dvdt\n", "\taccel = signal.medfilt(np.concatenate([[0],np.diff(y)]),[11]) \n", "\n", "\tdvdt_start = int((0.002+t0_offset)/dt)\n", "\tif ~np.isnan([epsp]).any():\n", "\t\tepsp_t = xtime[epsp]\n", "\t\tmax_dvdt = np.max(y[dvdt_start:epsp])\n", "\t\tdvdt_threshold = np.max([0.01,0.15*max_dvdt])\n", "\n", "\t\tonset_options = np.where((np.sign(y-dvdt_threshold)>0) & (np.sign(accel)>=0))[0]\n", "\t\tvalid_onsets = onset_options[(onset_options>dvdt_start)&(onset_options 0:\n", "\t\t\tif (epsp_t-(np.min(valid_onsets)*dt)*1000) > 0: #ensure that onset is before peak\n", "\t\t\t\tepsp_onset_ind = np.min(valid_onsets) #min after stim artifact\n", "\t\t\t\tepsp_amp = R[epsp]-R[0] #R[epsp]-R[epsp_onset_ind]\n", "\t\t\t\tepsp_onset = xtime[epsp_onset_ind]\n", "\t\t\t\tepsp_dvdt = np.max(y[epsp_onset_ind:epsp])\n", "\t\t\t\tepsp_dvdt = epsp_dvdt/dt/1000 # convert to mV/msec from mV/sample\n", "\t\t\telif (epsp_t-(np.min(valid_onsets)*dt)*1000) <= 0:\n", "\t\t\t\tepsp_t = np.NaN\n", "\t\t\t\tepsp_onset = np.NaN\n", "\t\t\t\tepsp_amp = np.NaN\n", "\t\t\t\tepsp_dvdt = np.NaN\n", "\t\telif len(valid_onsets)==0:\n", "\t\t\tepsp_t = np.NaN\n", "\t\t\tepsp_onset = np.NaN\n", "\t\t\tepsp_amp = np.NaN\n", "\t\t\tepsp_dvdt = np.NaN\n", "\telif np.isnan([epsp]).any():\n", "\t\tepsp_t = np.NaN\n", "\t\tepsp_onset = np.NaN\n", "\t\tepsp_amp = np.NaN \n", "\t\tepsp_dvdt = np.NaN\n", "\n", "\tif ~np.isnan([ipsp]).any():\n", "\t\tipsp_t = xtime[ipsp]\n", "\t\tmax_dvdt = np.min(y[dvdt_start:ipsp])\n", "\t\tdvdt_threshold = np.min([-0.01,0.15*max_dvdt])\n", "\n", "\t\tonset_options = np.where((np.sign(y-dvdt_threshold)<0) & (np.sign(accel)<=0))[0]\n", "\t\tvalid_onsets = onset_options[(onset_options>dvdt_start)&(onset_options 0:\n", "\t\t\tif (ipsp_t-(np.min(valid_onsets)*dt)*1000) > 0: #ensure that onset is before peak\n", "\t\t\t\tipsp_onset_ind = np.min(valid_onsets) #min after stim artifact\n", "\t\t\t\tipsp_amp = R[ipsp]-R[0] #R[ipsp_onset_ind]\n", "\t\t\t\tipsp_onset = xtime[ipsp_onset_ind]\n", "\t\t\t\tipsp_dvdt = np.min(y[ipsp_onset_ind:ipsp])\n", "\t\t\t\tipsp_dvdt = ipsp_dvdt/dt/1000 # convert to mV/msec from mV/sample\n", "\t\t\telif (ipsp_t-(np.min(valid_onsets)*dt)*1000) <= 0:\n", "\t\t\t\tipsp_t = np.NaN\n", "\t\t\t\tipsp_onset = np.NaN\n", "\t\t\t\tipsp_amp = np.NaN\n", "\t\t\t\tipsp_dvdt = np.NaN\n", "\t\telif len(valid_onsets)==0:\n", "\t\t\tipsp_t = np.NaN\n", "\t\t\tipsp_onset = np.NaN\n", "\t\t\tipsp_amp = np.NaN\n", "\t\t\tipsp_dvdt = np.NaN\n", "\telif np.isnan([ipsp]).any():\n", "\t\tipsp_t = np.NaN\n", "\t\tipsp_onset = np.NaN\n", "\t\tipsp_amp = np.NaN\n", "\t\tipsp_dvdt = np.NaN\n", "\n", "\t#calculate std of response starting at first psp onset with duration 20ms\n", "\tonset_vals = np.array([epsp_onset,ipsp_onset])\n", "\tif len(onset_vals[~np.isnan(onset_vals)])==2:\n", "\t\tif epsp= epsp_amp:\n", "\t\t\tR_shifted = R\n", "\t\telif R[int(epsp_t/1000/dt)] < epsp_amp: #if epsp peak is negative need to offset response to calc halfwidth\n", "\t\t\tR_shifted = R - R[int(epsp_t/1000/dt)] + epsp_amp\n", "\t\tif ~np.isnan(epsp_amp):\n", "\t\t\trise_options = np.where((np.sign((R_shifted-(epsp_amp/2)))>0) & (np.sign(y)>0))[0]\n", "\t\t\tvalid_rise = rise_options[rise_options>int(2/1000/dt)]\n", "\t\t\trise_t = np.min(valid_rise) * dt\n", "\t\t\tfall_options = np.where((np.sign((R_shifted-(epsp_amp/2)))>0) & (np.sign(y)<0))[0]\n", "\t\t\tvalid_fall = fall_options[fall_options>int(2/1000/dt)]\n", "\t\t\tfall_t = np.max(valid_fall) * dt\n", "\t\t\tepsp_hw = (fall_t - rise_t)*1000 #convert to ms\n", "\telif (np.isnan(epsp_t) | np.isnan(epsp_amp)):\n", "\t\tepsp_hw = np.NaN\n", "\n", "\treturn epsp_t, epsp_amp, epsp_onset, ipsp_t, ipsp_amp, ipsp_onset, response_std, peak_std, epsp_hw, epsp_dvdt, ipsp_dvdt\n", "\n", "def get_results(expt,cmd_t,u_t,c_t,c_latency,do_plot,ax):\n", "\t#get command response\n", "\txtime,sweeps = expt.get_sweepsmat('lowgain',cmd_t,sweepdur)\n", "\tcmd_ = np.mean(sweeps,1)-np.mean(sweeps,1)[0]\n", "\t# use these cmd trials to get Vm when measuring Estim responses\n", "\tVm_baseline = np.mean(sweeps,1)[0]\n", "\n", "\tcell_data = {\n", "\t\t'exptname' : exptname,\n", "\t\t'Vm_baseline' : Vm_baseline,\n", "\t\t'c_latency' : c_latency}\n", "\n", "\t# calculate peak data for cmdR\n", "\tmin_peakt = 0.003 #(s)\n", "\tthreshold_h = 0.25 #(mV)\n", "\torder = 0.0025 #(s)\n", "\t#get command response\n", "\txtime,sweeps = expt.get_sweepsmat('lowgain',cmd_t,sweepdur)\n", "\tresult = calc_peaks (xtime,sweeps, order, min_peakt,0,threshold_h,dt)\n", "\tif do_plot==1:\n", "\t\tplot_peaks_result(ax,xtime,sweeps,result,'purple')\n", "\tthis_dict = result_to_dict(result,'cmd')\n", "\tcell_data.update(this_dict)\n", "\n", "\t# calculate peak data for uncoupled response\n", "\t#get uncoupled response\n", "\txtime,sweeps = expt.get_sweepsmat('lowgain',u_t-c_latency,sweepdur)\n", "\tresult = calc_peaks (xtime,sweeps, order, min_peakt,c_latency,threshold_h,dt)\n", "\tif do_plot==1:\n", "\t\tplot_peaks_result(ax,xtime,sweeps,result,'green')\n", "\tthis_dict = result_to_dict(result,'u')\n", "\tcell_data.update(this_dict)\n", "\n", "\t# calculate peak data for coupled response\n", "\t#need to subtract cmd Response\n", "\t#first get command response offset by c_latency\n", "\t# xtime,sweeps = expt.get_sweepsmat('lowgain',cmd_t+c_latency,sweepdur)\n", "\t# cmd_ = np.mean(sweeps,1)-np.mean(sweeps,1)[0]\n", "\t#get coupled response\n", "\txtime,sweeps = expt.get_sweepsmat('lowgain',c_t-c_latency,sweepdur)\n", "\t# sweeps = np.asarray([sweep - cmd_ for sweep in sweeps.T]).T\n", "\tresult = calc_peaks (xtime,sweeps, order, min_peakt,c_latency,threshold_h,dt)\n", "\tif do_plot==1:\n", "\t\tplot_peaks_result(ax,xtime,sweeps,result,'orange')\n", "\tthis_dict = result_to_dict(result,'c') \n", "\tcell_data.update(this_dict)\n", "\tmean_c = np.mean(sweeps,1)-np.mean(sweeps,1)[0]\n", "\n", "\t# calculate peak data for predicted response\n", "\t#need to subtract cmd Response\n", "\t#first get command response offset by c_latency\n", "\txtime,sweeps = expt.get_sweepsmat('lowgain',cmd_t,sweepdur)\n", "\tcmd_ = np.mean(sweeps,1)-np.mean(sweeps,1)[0]\n", "\t#get uncoupled response\n", "\txtime,sweeps = expt.get_sweepsmat('lowgain',u_t-c_latency,sweepdur)\n", "\tsweeps = np.asarray([sweep + cmd_ for sweep in sweeps.T]).T\n", "\tresult = calc_peaks (xtime,sweeps, order, min_peakt,c_latency,threshold_h,dt)\n", "\tif do_plot==1:\n", "\t\tplot_peaks_result(ax,xtime,sweeps,result,'gray')\n", "\tthis_dict = result_to_dict(result,'p') \n", "\tcell_data.update(this_dict)\n", "\tmean_p = np.mean(sweeps,1)-np.mean(sweeps,1)[0]\n", "\n", "\tthis_dict = {'max_diff_predicted' : np.max(mean_c-mean_p)}\n", "\tcell_data.update(this_dict)\n", "\n", "\treturn cell_data\n", "\n", "def plot_response(ax,xtime,sweeps,color_r):\n", "\tR = np.mean(sweeps,1)-np.mean(sweeps,1)[0]\n", "\tax.plot(xtime,R,color = color_r)\n", "\n", "def plot_peaks_result(ax,xtime,sweeps,result,color_r):\n", "\tR = np.mean(sweeps,1)-np.mean(sweeps,1)[0]\n", "\tepsp_t = result[0],\n", "\tepsp_amp = result[1],\n", "\tepsp_onset = result[2],\n", "\tipsp_t = result[3],\n", "\tipsp_amp = result[4],\n", "\tipsp_onset = result[5],\n", "\n", "\tax.plot(xtime,R,color = color_r)\n", "\tax.vlines(epsp_onset,-2,2,color = 'red',linestyles='dashed')\n", "\tax.vlines(ipsp_onset,-2,2,color = 'blue',linestyles='dashed')\n", "\tax.plot(epsp_t, epsp_amp,\"*\",color = color_r)\n", "\tax.plot(ipsp_t, ipsp_amp,\"^\",color = color_r)\n", "\n", "def result_to_dict(result, rtype):\n", "\tthis_dict = {\n", "\t\trtype + '_epsp_t' : result[0],\n", "\t\trtype + '_epsp_amp' : result[1],\n", "\t\trtype + '_epsp_onset' : result[2],\n", "\t\trtype + '_ipsp_t' : result[3],\n", "\t\trtype + '_ipsp_amp' : result[4],\n", "\t\trtype + '_ipsp_onset' : result[5],\n", "\t\trtype + '_response_std' : result[6],\n", "\t\trtype + '_peak_std' : result[7],\n", "\t\trtype + '_epsp_hw' : result[8],\n", "\t\trtype + '_epsp_dvdt' : result[9],\n", "\t\trtype + '_ipsp_dvdt' : result[10]\n", "\t\t}\n", "\treturn this_dict\n", "\t\n", "#################################################\n", "#################################################\n", "# #%%\n", "# print('initializing a figure')\n", "# save_plot = 1\n", "# fig = plt.figure(num=1)\n", "# ax = fig.add_axes([0.1,0.1,0.8,0.8])\n", "# # ax.set_visible(True)" ] }, { "cell_type": "code", "execution_count": 50, "metadata": {}, "outputs": [], "source": [ "cell_data = {}\n", "time_data = {}\n", "u_offset = 0.005" ] }, { "cell_type": "code", "execution_count": 52, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "/mnt/engram/spikedata/data_raw/20200606/20200606_005.smr\n", "/mnt/engram/spikedata/data_raw/20200606/20200606_001.smr\n", "/mnt/engram/spikedata/data_raw/20200607/20200607_005.smr\n", "/mnt/engram/spikedata/data_raw/20200607/20200607_004.smr\n", "/mnt/engram/spikedata/data_raw/20200607/20200607_002.smr\n", "/mnt/engram/spikedata/data_raw/20200607/20200607_000.smr\n", "/mnt/engram/spikedata/data_raw/20200525/20200525_001.smr\n", "/mnt/engram/spikedata/data_raw/20200525/20200525_006.smr\n", "/mnt/engram/spikedata/data_raw/20200524/20200524_002.smr\n", "/mnt/engram/spikedata/data_raw/20200312/20200312_002.smr\n", "20200227_000\n", "/mnt/engram/spikedata/data_raw/20200227/20200227_000.smr\n", "20200226_002\n", "/mnt/engram/spikedata/data_raw/20200226/20200226_002.smr\n", "20200225_000\n", "/mnt/engram/spikedata/data_raw/20200225/20200225_000.smr\n", "20200115_002\n", "/mnt/engram/spikedata/data_raw/20200115/20200115_002.smr\n", "/mnt/engram/spikedata/data_raw/20200113/20200113_003.smr\n", "/mnt/engram/spikedata/data_raw/20200113/20200113_004.smr\n", "/mnt/engram/spikedata/data_raw/20191218/20191218_005.smr\n", "/mnt/engram/spikedata/data_raw/20191218/20191218_009.smr\n", "/mnt/engram/spikedata/data_raw/20200122/20200122_001.smr\n", "/mnt/engram/spikedata/data_raw/20200115/20200115_004.smr\n", "/mnt/engram/spikedata/data_raw/20200312/20200312_000.smr\n", "/mnt/engram/spikedata/data_raw/20200309/20200309_000.smr\n", "/mnt/engram/spikedata/data_raw/20200122/20200122_002.smr\n", "/mnt/engram/spikedata/data_raw/20200121/20200121_006.smr\n", "/mnt/engram/spikedata/data_raw/20200109/20200109_004.smr\n" ] } ], "source": [ "#################################################\n", "#################################################\n", "# %%\n", "\n", "exptname = '20200606_005'\n", "\n", "expt = AmpShift_Stable()\n", "expt.load_expt(exptname, data_folder)\n", "expt.set_channels('CmdTrig','lowgain','spikes','SIU','DigMark')\n", "\n", "marker_df = expt.get_marker_table()\n", "dt = expt.get_dt('lowgain')\n", "\n", "#from command only trials get times for command responses\n", "bout = [expt.get_bout_win('B','Keyboard')[0]]\n", "bout_df = expt.filter_marker_df_time(marker_df,bout)\n", "b_df = expt.filter_marker_df_code(bout_df,['B'])\n", "cmd_t = b_df.time.values\n", "\n", "bout = [expt.get_bout_win('R','Keyboard')[1]]\n", "bout_df = expt.filter_marker_df_time(marker_df,bout)\n", "u_df = expt.filter_marker_df_code(bout_df,['U'])\n", "u_t = u_df.time.values\n", "\n", "#get uncoupled response\n", "xtime,sweeps = expt.get_sweepsmat('lowgain',u_t-u_offset,sweepdur)\n", "cell_data[exptname] = np.mean(sweeps,1)\n", "time_data[exptname] = xtime\n", "\n", "#################################################\n", "#################################################\n", "# %%\n", "exptname = '20200606_001'\n", "\n", "expt = AmpShift_Stable()\n", "expt.load_expt(exptname, data_folder)\n", "expt.set_channels('CmdTrig','lowgain','spikes','SIU','DigMark')\n", "\n", "bout = [expt.get_bout_win('R','Keyboard')[1],\n", "\t\texpt.get_bout_win('N','Keyboard')[1]]\n", "\n", "marker_df = expt.get_marker_table()\n", "dt = expt.get_dt('lowgain')\n", "bout_df = expt.filter_marker_df_time(marker_df,bout)\n", "\n", "b_df = expt.filter_marker_df_code(bout_df,['B'])\n", "u_df = expt.filter_marker_df_code(bout_df,['U'])\n", "c_df = expt.filter_marker_df_code(bout_df,['C'])\n", "\n", "u_t = u_df.time.values\n", "c_t = c_df.time.values\n", "#from uncoupled trials get times for command responses\n", "cmd_t = np.asarray([np.max(b_df.time.values[b_df.time.values0):\n", "\t\tcmd_pre = u-np.max(b_df.time.values[b_df.time.valuesu])>0):\n", "\t\tcmd_post = np.min(b_df.time.values[b_df.time.values>u])-u\n", "\tif ((cmd_pre>0.05) & (cmd_post>0.05)):\n", "\t\tu_t.append(u)\n", "u_t = np.asarray(u_t)\n", "\n", "bout = [expt.get_bout_win('B','Keyboard')[0],\n", "\t\texpt.get_bout_win('B','Keyboard')[1]]\n", "bout_df = expt.filter_marker_df_time(marker_df,bout)\n", "b_df = expt.filter_marker_df_code(bout_df,['B'])\n", "cmd_t = b_df.time.values\n", "\n", "\n", "#get uncoupled response\n", "xtime,sweeps = expt.get_sweepsmat('lowgain',u_t-u_offset,sweepdur)\n", "cell_data[exptname] = np.mean(sweeps,1)\n", "time_data[exptname] = xtime\n", "\n", "#################################################\n", "#################################################\n", "#%%\n", "\n", "exptname = '20171107_002'\n", "\n", "expt = AmpShift_Stable()\n", "expt.load_expt(exptname, data_folder)\n", "expt.set_channels('CmdTrig','lowgain','spikes','SIU','DigMark')\n", "\n", "marker_df = expt.get_marker_table()\n", "dt = expt.get_dt('lowgain')\n", "\n", "bout = [expt.get_bout_win('U','Keyboard')[0]]\n", "bout_df = expt.filter_marker_df_time(marker_df,bout)\n", "u_df = expt.filter_marker_df_code(bout_df,['E'])\n", "u_t = u_df.time.values - 0.0003\n", "\n", "bout = [expt.get_bout_win('B','Keyboard')[0]]\n", "bout_df = expt.filter_marker_df_time(marker_df,bout)\n", "b_df = expt.filter_marker_df_code(bout_df,['B'])\n", "cmd_t = b_df.time.values\n", "\n", "bout = [expt.get_bout_win('C','Keyboard')[0]]\n", "bout_df = expt.filter_marker_df_time(marker_df,bout)\n", "c_df = expt.filter_marker_df_code(bout_df,['E'])\n", "b_df = expt.filter_marker_df_code(bout_df,['B'])\n", "c_t = c_df.time.values - 0.0003\n", "\n", "#get uncoupled response\n", "xtime,sweeps = expt.get_sweepsmat('lowgain',u_t-u_offset,sweepdur)\n", "cell_data[exptname] = np.mean(sweeps,1)\n", "time_data[exptname] = xtime\n", "\n", "#################################################\n", "#################################################\n", "#%%\n", "exptname = '20171011_001'\n", "\n", "expt = AmpShift_Stable()\n", "expt.load_expt(exptname, data_folder)\n", "expt.set_channels('CmdTrig','lowgain','spikes','SIU','DigMark')\n", "\n", "marker_df = expt.get_marker_table()\n", "dt = expt.get_dt('lowgain')\n", "\n", "bout = [expt.get_bout_win('U','Keyboard')[0]]\n", "bout_df = expt.filter_marker_df_time(marker_df,bout)\n", "u_df = expt.filter_marker_df_code(bout_df,['E'])\n", "u_t = u_df.time.values - 0.0003\n", "\n", "bout = [expt.get_bout_win('B','Keyboard')[0]]\n", "bout_df = expt.filter_marker_df_time(marker_df,bout)\n", "b_df = expt.filter_marker_df_code(bout_df,['B'])\n", "cmd_t = b_df.time.values\n", "\n", "bout = [expt.get_bout_win('C','Keyboard')[0]]\n", "bout_df = expt.filter_marker_df_time(marker_df,bout)\n", "c_df = expt.filter_marker_df_code(bout_df,['E'])\n", "b_df = expt.filter_marker_df_code(bout_df,['B'])\n", "c_t = c_df.time.values - 0.0003\n", "\n", "#get uncoupled response\n", "xtime,sweeps = expt.get_sweepsmat('lowgain',u_t-u_offset,sweepdur)\n", "cell_data[exptname] = np.mean(sweeps,1)\n", "time_data[exptname] = xtime\n", "\n", "#################################################\n", "#################################################\n", "#%%\n", "\n", "exptname = '20171010_000'\n", "\n", "expt = AmpShift_Stable()\n", "expt.load_expt(exptname, data_folder)\n", "expt.set_channels('CmdTrig','lowgain','spikes','SIU','DigMark')\n", "\n", "marker_df = expt.get_marker_table()\n", "dt = expt.get_dt('lowgain')\n", "\n", "bout = [expt.get_bout_win('U','Keyboard')[0],\n", "\t\texpt.get_bout_win('U','Keyboard')[1]]\n", "bout_df = expt.filter_marker_df_time(marker_df,bout)\n", "u_df = expt.filter_marker_df_code(bout_df,['E'])\n", "u_t = u_df.time.values - 0.0003\n", "\n", "bout = [expt.get_bout_win('B','Keyboard')[0],\n", "\t\texpt.get_bout_win('B','Keyboard')[1]]\n", "bout_df = expt.filter_marker_df_time(marker_df,bout)\n", "b_df = expt.filter_marker_df_code(bout_df,['B'])\n", "cmd_t = b_df.time.values\n", "\n", "bout = [expt.get_bout_win('C','Keyboard')[0]]\n", "bout_df = expt.filter_marker_df_time(marker_df,bout)\n", "c_df = expt.filter_marker_df_code(bout_df,['E'])\n", "b_df = expt.filter_marker_df_code(bout_df,['B'])\n", "c_t = c_df.time.values - 0.0003\n", "\n", "#get uncoupled response\n", "xtime,sweeps = expt.get_sweepsmat('lowgain',u_t-u_offset,sweepdur)\n", "cell_data[exptname] = np.mean(sweeps,1)\n", "time_data[exptname] = xtime\n", "\n", "#################################################\n", "#################################################\n", "#%%\n", "exptname = '20171010_003'\n", "\n", "expt = AmpShift_Stable()\n", "expt.load_expt(exptname, data_folder)\n", "expt.set_channels('CmdTrig','lowgain','spikes','SIU','DigMark')\n", "\n", "marker_df = expt.get_marker_table()\n", "dt = expt.get_dt('lowgain')\n", "\n", "bout = [expt.get_bout_win('U','Keyboard')[0],\n", "\t\texpt.get_bout_win('U','Keyboard')[1]]\n", "bout_df = expt.filter_marker_df_time(marker_df,bout)\n", "u_df = expt.filter_marker_df_code(bout_df,['E'])\n", "u_t = u_df.time.values - 0.0003\n", "\n", "bout = [expt.get_bout_win('B','Keyboard')[0],\n", "\t\texpt.get_bout_win('B','Keyboard')[1]]\n", "bout_df = expt.filter_marker_df_time(marker_df,bout)\n", "b_df = expt.filter_marker_df_code(bout_df,['B'])\n", "cmd_t = b_df.time.values\n", "\n", "bout = [expt.get_bout_win('C','Keyboard')[0]]\n", "bout_df = expt.filter_marker_df_time(marker_df,bout)\n", "c_df = expt.filter_marker_df_code(bout_df,['E'])\n", "b_df = expt.filter_marker_df_code(bout_df,['B'])\n", "c_t = c_df.time.values - 0.0003\n", "\n", "#get uncoupled response\n", "xtime,sweeps = expt.get_sweepsmat('lowgain',u_t-u_offset,sweepdur)\n", "cell_data[exptname] = np.mean(sweeps,1)\n", "time_data[exptname] = xtime\n", "\n", "######## then super hyperpolarized to prevent spiking\n", "\n", "bout = [expt.get_bout_win('U','Keyboard')[3]]\n", "bout_df = expt.filter_marker_df_time(marker_df,bout)\n", "u_df = expt.filter_marker_df_code(bout_df,['E'])\n", "u_t = u_df.time.values - 0.0003\n", "\n", "bout = [expt.get_bout_win('U','Keyboard')[3]]\n", "bout_df = expt.filter_marker_df_time(marker_df,bout)\n", "b_df = expt.filter_marker_df_code(bout_df,['B'])\n", "cmd_t = b_df.time.values\n", "\n", "bout = [expt.get_bout_win('C','Keyboard')[2]]\n", "bout_df = expt.filter_marker_df_time(marker_df,bout)\n", "c_df = expt.filter_marker_df_code(bout_df,['E'])\n", "b_df = expt.filter_marker_df_code(bout_df,['B'])\n", "c_t = c_df.time.values - 0.0003\n", "\n", "#get uncoupled response\n", "xtime,sweeps = expt.get_sweepsmat('lowgain',u_t-u_offset,sweepdur)\n", "cell_data[exptname + '_hyperpolarized'] = np.mean(sweeps,1)\n", "time_data[exptname + '_hyperpolarized'] = xtime\n", "\n", "#################################################\n", "#################################################\n", "#%%\n", "exptname = '20170502_002'\n", "\n", "expt = AmpShift_Stable()\n", "expt.load_expt(exptname, data_folder)\n", "expt.set_channels('CmdTrig','lowgain','spikes','SIU','DigMark')\n", "\n", "marker_df = expt.get_marker_table()\n", "dt = expt.get_dt('lowgain')\n", "\n", "bout = [expt.get_bout_win('U','Keyboard')[0]]\n", "bout_df = expt.filter_marker_df_time(marker_df,bout)\n", "u_df = expt.filter_marker_df_code(bout_df,['E'])\n", "u_t = u_df.time.values - 0.0003\n", "\n", "bout = [expt.get_bout_win('B','Keyboard')[0],\n", "\t\texpt.get_bout_win('B','Keyboard')[1]]\n", "bout_df = expt.filter_marker_df_time(marker_df,bout)\n", "b_df = expt.filter_marker_df_code(bout_df,['B'])\n", "cmd_t = b_df.time.values\n", "\n", "bout = [expt.get_bout_win('C','Keyboard')[0]]\n", "bout_df = expt.filter_marker_df_time(marker_df,bout)\n", "c_df = expt.filter_marker_df_code(bout_df,['E'])\n", "b_df = expt.filter_marker_df_code(bout_df,['B'])\n", "c_t = c_df.time.values - 0.0003\n", "\n", "#get uncoupled response\n", "xtime,sweeps = expt.get_sweepsmat('lowgain',u_t-u_offset,sweepdur)\n", "cell_data[exptname] = np.mean(sweeps,1)\n", "time_data[exptname] = xtime\n", "#################################################\n", "#################################################\n", "#%%" ] }, { "cell_type": "code", "execution_count": 61, "metadata": {}, "outputs": [], "source": [ "pickle_out = open(df_folder / 'cell_data_uncoupled.pickle','wb')\n", "pickle.dump(cell_data, pickle_out)\n", "pickle_out.close()\n", "\n", "pickle_out = open(df_folder / 'time_data_uncoupled.pickle','wb')\n", "pickle.dump(time_data, pickle_out)\n", "pickle_out.close()" ] }, { "cell_type": "code", "execution_count": 62, "metadata": {}, "outputs": [], "source": [ "pickle_in = open(df_folder / 'cell_data_uncoupled.pickle',\"rb\")\n", "cell_data = pickle.load(pickle_in)\n", "pickle_in.close()\n", "\n", "pickle_in = open(df_folder / 'time_data_uncoupled.pickle',\"rb\")\n", "time_data = pickle.load(pickle_in)\n", "pickle_in.close()" ] }, { "cell_type": "code", "execution_count": 63, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'20200606_005': array([0.00000000e+00, 2.00053348e-02, 4.00106695e-02, ...,\n", " 7.49599893e+01, 7.49799947e+01, 7.50000000e+01]),\n", " '20200606_001': array([0.00000000e+00, 2.00053348e-02, 4.00106695e-02, ...,\n", " 7.49599893e+01, 7.49799947e+01, 7.50000000e+01]),\n", " '20200607_005': array([0.00000000e+00, 5.00667557e-02, 1.00133511e-01, ...,\n", " 7.48998665e+01, 7.49499332e+01, 7.50000000e+01]),\n", " '20200607_004': array([0.00000000e+00, 5.00667557e-02, 1.00133511e-01, ...,\n", " 7.48998665e+01, 7.49499332e+01, 7.50000000e+01]),\n", " '20200607_002': array([0.00000000e+00, 5.00667557e-02, 1.00133511e-01, ...,\n", " 7.48998665e+01, 7.49499332e+01, 7.50000000e+01]),\n", " '20200607_000': array([0.00000000e+00, 5.00667557e-02, 1.00133511e-01, ...,\n", " 7.48998665e+01, 7.49499332e+01, 7.50000000e+01]),\n", " '20200525_001': array([0.00000000e+00, 2.00053348e-02, 4.00106695e-02, ...,\n", " 7.49599893e+01, 7.49799947e+01, 7.50000000e+01]),\n", " '20200525_006': array([0.00000000e+00, 2.00053348e-02, 4.00106695e-02, ...,\n", " 7.49599893e+01, 7.49799947e+01, 7.50000000e+01]),\n", " '20200524_002': array([0.00000000e+00, 2.00053348e-02, 4.00106695e-02, ...,\n", " 7.49599893e+01, 7.49799947e+01, 7.50000000e+01]),\n", " '20200312_002': array([0.00000000e+00, 2.00053348e-02, 4.00106695e-02, ...,\n", " 7.49599893e+01, 7.49799947e+01, 7.50000000e+01]),\n", " '20200227_000': array([0.00000000e+00, 2.00053348e-02, 4.00106695e-02, ...,\n", " 7.49599893e+01, 7.49799947e+01, 7.50000000e+01]),\n", " '20200226_002': array([0.00000000e+00, 2.00053348e-02, 4.00106695e-02, ...,\n", " 7.49599893e+01, 7.49799947e+01, 7.50000000e+01]),\n", " '20200225_000': array([0.00000000e+00, 2.00053348e-02, 4.00106695e-02, ...,\n", " 7.49599893e+01, 7.49799947e+01, 7.50000000e+01]),\n", " '20200115_002': array([0.00000000e+00, 2.50166778e-02, 5.00333556e-02, ...,\n", " 7.49499666e+01, 7.49749833e+01, 7.50000000e+01]),\n", " '20200113_003': array([0.00000000e+00, 2.50166778e-02, 5.00333556e-02, ...,\n", " 7.49499666e+01, 7.49749833e+01, 7.50000000e+01]),\n", " '20200113_004': array([0.00000000e+00, 2.50166778e-02, 5.00333556e-02, ...,\n", " 7.49499666e+01, 7.49749833e+01, 7.50000000e+01]),\n", " '20191218_005': array([0.00000000e+00, 2.50166778e-02, 5.00333556e-02, ...,\n", " 7.49499666e+01, 7.49749833e+01, 7.50000000e+01]),\n", " '20191218_009': array([0.00000000e+00, 2.50166778e-02, 5.00333556e-02, ...,\n", " 7.49499666e+01, 7.49749833e+01, 7.50000000e+01]),\n", " '20200122_001': array([0.00000000e+00, 2.50166778e-02, 5.00333556e-02, ...,\n", " 7.49499666e+01, 7.49749833e+01, 7.50000000e+01]),\n", " '20200115_004': array([0.00000000e+00, 2.50166778e-02, 5.00333556e-02, ...,\n", " 7.49499666e+01, 7.49749833e+01, 7.50000000e+01]),\n", " '20200312_000': array([0.00000000e+00, 2.00053348e-02, 4.00106695e-02, ...,\n", " 7.49599893e+01, 7.49799947e+01, 7.50000000e+01]),\n", " '20200309_000': array([0.00000000e+00, 2.00053348e-02, 4.00106695e-02, ...,\n", " 7.49599893e+01, 7.49799947e+01, 7.50000000e+01]),\n", " '20200122_002': array([0.00000000e+00, 2.50166778e-02, 5.00333556e-02, ...,\n", " 7.49499666e+01, 7.49749833e+01, 7.50000000e+01]),\n", " '20200121_006': array([0.00000000e+00, 2.50166778e-02, 5.00333556e-02, ...,\n", " 7.49499666e+01, 7.49749833e+01, 7.50000000e+01]),\n", " '20200109_004': array([0.00000000e+00, 2.50166778e-02, 5.00333556e-02, ...,\n", " 7.49499666e+01, 7.49749833e+01, 7.50000000e+01]),\n", " '20191218_007': array([0.00000000e+00, 2.50166778e-02, 5.00333556e-02, ...,\n", " 7.49499666e+01, 7.49749833e+01, 7.50000000e+01]),\n", " '20180122_001_hyperpolarized': array([0.00000000e+00, 5.00667557e-02, 1.00133511e-01, ...,\n", " 7.48998665e+01, 7.49499332e+01, 7.50000000e+01]),\n", " '20180122_001': array([0.00000000e+00, 5.00667557e-02, 1.00133511e-01, ...,\n", " 7.48998665e+01, 7.49499332e+01, 7.50000000e+01]),\n", " '20190325_002': array([0.00000000e+00, 2.00053348e-02, 4.00106695e-02, ...,\n", " 7.49599893e+01, 7.49799947e+01, 7.50000000e+01]),\n", " '20171031_004_hyperpolarized': array([0.00000000e+00, 5.00667557e-02, 1.00133511e-01, ...,\n", " 7.48998665e+01, 7.49499332e+01, 7.50000000e+01]),\n", " '20171031_004': array([0.00000000e+00, 5.00667557e-02, 1.00133511e-01, ...,\n", " 7.48998665e+01, 7.49499332e+01, 7.50000000e+01]),\n", " '20171010_006': array([0.00000000e+00, 5.00667557e-02, 1.00133511e-01, ...,\n", " 7.48998665e+01, 7.49499332e+01, 7.50000000e+01]),\n", " '20180130_000': array([0.00000000e+00, 5.00667557e-02, 1.00133511e-01, ...,\n", " 7.48998665e+01, 7.49499332e+01, 7.50000000e+01]),\n", " '20180108_004_hyperpolarized': array([0.00000000e+00, 5.00667557e-02, 1.00133511e-01, ...,\n", " 7.48998665e+01, 7.49499332e+01, 7.50000000e+01]),\n", " '20180108_004': array([0.00000000e+00, 5.00667557e-02, 1.00133511e-01, ...,\n", " 7.48998665e+01, 7.49499332e+01, 7.50000000e+01]),\n", " '20170912_003': array([0.00000000e+00, 5.00667557e-02, 1.00133511e-01, ...,\n", " 7.48998665e+01, 7.49499332e+01, 7.50000000e+01]),\n", " '20170912_005': array([0.00000000e+00, 5.00667557e-02, 1.00133511e-01, ...,\n", " 7.48998665e+01, 7.49499332e+01, 7.50000000e+01]),\n", " '20170912_005_bout2': array([0.00000000e+00, 5.00667557e-02, 1.00133511e-01, ...,\n", " 7.48998665e+01, 7.49499332e+01, 7.50000000e+01]),\n", " '20190107_000': array([0.00000000e+00, 2.00053348e-02, 4.00106695e-02, ...,\n", " 7.49599893e+01, 7.49799947e+01, 7.50000000e+01]),\n", " '20171027_000': array([0.00000000e+00, 5.00667557e-02, 1.00133511e-01, ...,\n", " 7.48998665e+01, 7.49499332e+01, 7.50000000e+01]),\n", " '20180103_001': array([0.00000000e+00, 5.00667557e-02, 1.00133511e-01, ...,\n", " 7.48998665e+01, 7.49499332e+01, 7.50000000e+01]),\n", " '20180103_001_bout2': array([0.00000000e+00, 5.00667557e-02, 1.00133511e-01, ...,\n", " 7.48998665e+01, 7.49499332e+01, 7.50000000e+01]),\n", " '20180103_001_hyperpolarized': array([0.00000000e+00, 5.00667557e-02, 1.00133511e-01, ...,\n", " 7.48998665e+01, 7.49499332e+01, 7.50000000e+01]),\n", " '20190102_000': array([0.00000000e+00, 2.00053348e-02, 4.00106695e-02, ...,\n", " 7.49599893e+01, 7.49799947e+01, 7.50000000e+01]),\n", " '20180103_003': array([0.00000000e+00, 5.00667557e-02, 1.00133511e-01, ...,\n", " 7.48998665e+01, 7.49499332e+01, 7.50000000e+01]),\n", " '20190227_001': array([0.00000000e+00, 2.00053348e-02, 4.00106695e-02, ...,\n", " 7.49599893e+01, 7.49799947e+01, 7.50000000e+01]),\n", " '20190104_000': array([0.00000000e+00, 2.00053348e-02, 4.00106695e-02, ...,\n", " 7.49599893e+01, 7.49799947e+01, 7.50000000e+01]),\n", " '20190128_001': array([0.00000000e+00, 2.00053348e-02, 4.00106695e-02, ...,\n", " 7.49599893e+01, 7.49799947e+01, 7.50000000e+01]),\n", " '20190312_005': array([0.00000000e+00, 2.00053348e-02, 4.00106695e-02, ...,\n", " 7.49599893e+01, 7.49799947e+01, 7.50000000e+01]),\n", " '20171010_002': array([0.00000000e+00, 5.00667557e-02, 1.00133511e-01, ...,\n", " 7.48998665e+01, 7.49499332e+01, 7.50000000e+01]),\n", " '20180122_002': array([0.00000000e+00, 5.00667557e-02, 1.00133511e-01, ...,\n", " 7.48998665e+01, 7.49499332e+01, 7.50000000e+01]),\n", " '20171010_005': array([0.00000000e+00, 5.00667557e-02, 1.00133511e-01, ...,\n", " 7.48998665e+01, 7.49499332e+01, 7.50000000e+01]),\n", " '20181213_002': array([0.00000000e+00, 2.00053348e-02, 4.00106695e-02, ...,\n", " 7.49599893e+01, 7.49799947e+01, 7.50000000e+01]),\n", " '20190107_003': array([0.00000000e+00, 2.00053348e-02, 4.00106695e-02, ...,\n", " 7.49599893e+01, 7.49799947e+01, 7.50000000e+01]),\n", " '20190110_000': array([0.00000000e+00, 2.00053348e-02, 4.00106695e-02, ...,\n", " 7.49599893e+01, 7.49799947e+01, 7.50000000e+01]),\n", " '20200309_001': array([0.00000000e+00, 2.00053348e-02, 4.00106695e-02, ...,\n", " 7.49599893e+01, 7.49799947e+01, 7.50000000e+01]),\n", " '20200303_000': array([0.00000000e+00, 2.00053348e-02, 4.00106695e-02, ...,\n", " 7.49599893e+01, 7.49799947e+01, 7.50000000e+01]),\n", " '20180105_000': array([0.00000000e+00, 5.00667557e-02, 1.00133511e-01, ...,\n", " 7.48998665e+01, 7.49499332e+01, 7.50000000e+01]),\n", " '20180112_003': array([0.00000000e+00, 5.00667557e-02, 1.00133511e-01, ...,\n", " 7.48998665e+01, 7.49499332e+01, 7.50000000e+01]),\n", " '20180108_001': array([0.00000000e+00, 5.00667557e-02, 1.00133511e-01, ...,\n", " 7.48998665e+01, 7.49499332e+01, 7.50000000e+01]),\n", " '20170206_003': array([0.00000000e+00, 5.00667557e-02, 1.00133511e-01, ...,\n", " 7.48998665e+01, 7.49499332e+01, 7.50000000e+01]),\n", " '20171107_002': array([0.00000000e+00, 5.00667557e-02, 1.00133511e-01, ...,\n", " 7.48998665e+01, 7.49499332e+01, 7.50000000e+01]),\n", " '20171011_001': array([0.00000000e+00, 5.00667557e-02, 1.00133511e-01, ...,\n", " 7.48998665e+01, 7.49499332e+01, 7.50000000e+01]),\n", " '20171010_000': array([0.00000000e+00, 5.00667557e-02, 1.00133511e-01, ...,\n", " 7.48998665e+01, 7.49499332e+01, 7.50000000e+01]),\n", " '20171010_003': array([0.00000000e+00, 5.00667557e-02, 1.00133511e-01, ...,\n", " 7.48998665e+01, 7.49499332e+01, 7.50000000e+01]),\n", " '20171010_003_hyperpolarized': array([0.00000000e+00, 5.00667557e-02, 1.00133511e-01, ...,\n", " 7.48998665e+01, 7.49499332e+01, 7.50000000e+01]),\n", " '20170502_002': array([0.00000000e+00, 5.00667557e-02, 1.00133511e-01, ...,\n", " 7.48998665e+01, 7.49499332e+01, 7.50000000e+01])}" ] }, "execution_count": 63, "metadata": {}, "output_type": "execute_result" } ], "source": [ "time_data" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# #############\n", "# # %%\n", "# ####### if freerun stim and need to elminate some\n", "# ####### stim trials because too close to cmd\n", "# ###############\n", "# u_t_all = u_df.time.values - 0.0003\n", "# #from uncoupled trials get times for command responses\n", "# b_df = expt.filter_marker_df_code(bout_df,['B'])\n", "# u_t = []\n", "# for u in u_t_all:\n", "# \tcmd_pre=np.NaN\n", "# \tcmd_post=np.NaN\n", "# \tif (len(b_df.time.values[b_df.time.values0):\n", "# \t\tcmd_pre = u-np.max(b_df.time.values[b_df.time.valuesu])>0):\n", "# \t\tcmd_post = np.min(b_df.time.values[b_df.time.values>u])-u\n", "# \tif ((cmd_pre>0.05) & (cmd_post>0.05)):\n", "# \t\tu_t.append(u)\n", "# u_t = np.asarray(u_t)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Command responses \n", "> (5 cells of each type with similar Vm rest)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Superficial:" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "/Users/kperks/mnt/engram/spikedata/data_raw/20171010/20171010_006.smr\n", "/Users/kperks/mnt/engram/spikedata/data_raw/20190107/20190107_000.smr\n", "/Users/kperks/mnt/engram/spikedata/data_raw/20180108/20180108_004.smr\n", "/Users/kperks/mnt/engram/spikedata/data_raw/20200109/20200109_004.smr\n", "/Users/kperks/mnt/engram/spikedata/data_raw/20180103/20180103_001.smr\n" ] } ], "source": [ "cell_data = {}\n", "time_data = {}\n", "cmd_offset = 0.0005\n", "\n", "###############\n", "exptname = '20171010_006'\n", "\n", "expt = AmpShift_Stable()\n", "expt.load_expt(exptname, data_folder)\n", "expt.set_channels('CmdTrig','lowgain','spikes','SIU','DigMark')\n", "marker_df = expt.get_marker_table()\n", "dt = expt.get_dt('lowgain')\n", "\n", "bout = [expt.get_bout_win('U','Keyboard')[0],expt.get_bout_win('B','Keyboard')[0]]\n", "bout_df = expt.filter_marker_df_time(marker_df,bout)\n", "b_df = expt.filter_marker_df_code(bout_df,['B'])\n", "cmd_t = b_df.time.values\n", "\n", "#get cmd response\n", "xtime,sweeps = expt.get_sweepsmat('lowgain',cmd_t-cmd_offset,sweepdur)\n", "cell_data[exptname] = np.mean(sweeps,1)\n", "time_data[exptname] = xtime\n", "\n", "################\n", "exptname = '20190107_000'\n", "\n", "expt = AmpShift_Stable()\n", "expt.load_expt(exptname, data_folder)\n", "expt.set_channels('CmdTrig','lowgain','spikes','SIU','DigMark')\n", "marker_df = expt.get_marker_table()\n", "dt = expt.get_dt('lowgain')\n", "\n", "bout = [expt.get_bout_win('B','Keyboard')[0]]\n", "bout_df = expt.filter_marker_df_time(marker_df,bout)\n", "b_df = expt.filter_marker_df_code(bout_df,['B'])\n", "cmd_t = b_df.time.values\n", "\n", "#get cmd response\n", "xtime,sweeps = expt.get_sweepsmat('lowgain',cmd_t-cmd_offset,sweepdur)\n", "cell_data[exptname] = np.mean(sweeps,1)\n", "time_data[exptname] = xtime\n", "\n", "################\n", "exptname = '20180108_004'\n", "\n", "expt = AmpShift_Stable()\n", "expt.load_expt(exptname, data_folder)\n", "expt.set_channels('CmdTrig','lowgain','spikes','SIU','DigMark')\n", "marker_df = expt.get_marker_table()\n", "dt = expt.get_dt('lowgain')\n", "\n", "bout = [expt.get_bout_win('U','Keyboard')[0],\n", " expt.get_bout_win('B','Keyboard')[0]]\n", "bout_df = expt.filter_marker_df_time(marker_df,bout)\n", "b_df = expt.filter_marker_df_code(bout_df,['B'])\n", "cmd_t = b_df.time.values\n", "\n", "#get cmd response\n", "xtime,sweeps = expt.get_sweepsmat('lowgain',cmd_t-cmd_offset,sweepdur)\n", "cell_data[exptname] = np.mean(sweeps,1)\n", "time_data[exptname] = xtime\n", "\n", "################\n", "exptname = '20200109_004'\n", "\n", "expt = AmpShift_Stable()\n", "expt.load_expt(exptname, data_folder)\n", "expt.set_channels('CmdTrig','lowgain','spikes','SIU','DigMark')\n", "marker_df = expt.get_marker_table()\n", "dt = expt.get_dt('lowgain')\n", "\n", "bout = [expt.get_bout_win('U','Keyboard')[0],\n", " expt.get_bout_win('B','Keyboard')[0],\n", " expt.get_bout_win('B','Keyboard')[1]]\n", "bout_df = expt.filter_marker_df_time(marker_df,bout)\n", "b_df = expt.filter_marker_df_code(bout_df,['B'])\n", "cmd_t = b_df.time.values\n", "\n", "#get cmd response\n", "xtime,sweeps = expt.get_sweepsmat('lowgain',cmd_t-cmd_offset,sweepdur)\n", "cell_data[exptname] = np.mean(sweeps,1)\n", "time_data[exptname] = xtime\n", "\n", "################\n", "exptname = '20180103_001'\n", "\n", "expt = AmpShift_Stable()\n", "expt.load_expt(exptname, data_folder)\n", "expt.set_channels('CmdTrig','lowgain','spikes','SIU','DigMark')\n", "marker_df = expt.get_marker_table()\n", "dt = expt.get_dt('lowgain')\n", "\n", "bout = [expt.get_bout_win('U','Keyboard')[0]]\n", "bout_df = expt.filter_marker_df_time(marker_df,bout)\n", "b_df = expt.filter_marker_df_code(bout_df,['B'])\n", "cmd_t = b_df.time.values\n", "\n", "#get cmd response\n", "xtime,sweeps = expt.get_sweepsmat('lowgain',cmd_t-cmd_offset,sweepdur)\n", "cell_data[exptname] = np.mean(sweeps,1)\n", "time_data[exptname] = xtime\n", "\n" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "pickle_out = open(df_folder / 'cell_data_cmd_superficial.pickle','wb')\n", "pickle.dump(cell_data, pickle_out)\n", "pickle_out.close()\n", "\n", "pickle_out = open(df_folder / 'time_data_cmd_superficial.pickle','wb')\n", "pickle.dump(time_data, pickle_out)\n", "pickle_out.close()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### deep" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "/Users/kperks/mnt/engram/spikedata/data_raw/20200227/20200227_000.smr\n", "/Users/kperks/mnt/engram/spikedata/data_raw/20190104/20190104_000.smr\n", "/Users/kperks/mnt/engram/spikedata/data_raw/20200312/20200312_002.smr\n", "/Users/kperks/mnt/engram/spikedata/data_raw/20190110/20190110_000.smr\n", "/Users/kperks/mnt/engram/spikedata/data_raw/20191218/20191218_005.smr\n" ] } ], "source": [ "cell_data = {}\n", "time_data = {}\n", "cmd_offset = 0.0005\n", "\n", "\n", "################\n", "exptname = '20200227_000'\n", "\n", "expt = AmpShift_Stable()\n", "expt.load_expt(exptname, data_folder)\n", "expt.set_channels('CmdTrig','lowgain','spikes','SIU','DigMark')\n", "marker_df = expt.get_marker_table()\n", "dt = expt.get_dt('lowgain')\n", "\n", "bout = [expt.get_bout_win('R','Keyboard')[0],\n", " expt.get_bout_win('N','Keyboard')[0]]\n", "\n", "bout_df = expt.filter_marker_df_time(marker_df,bout)\n", "\n", "b_df = expt.filter_marker_df_code(bout_df,['B'])\n", "u_df = expt.filter_marker_df_code(bout_df,['U'])\n", "\n", "u_t = u_df.time.values\n", "#from uncoupled trials get times for command responses\n", "cmd_t = np.asarray([np.max(b_df.time.values[b_df.time.values