{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Raster Peristimulus Time Histogram (PSTH) Example\n", "Import snippet and epoc data into Python using **read_block** \n", "Generate peristimulus raster and histogram plots over all trials using **epoc_filter** \n", "Good for stim-response experiments, such as optogenetic or electrical stimulation\n", "## Housekeeping\n", "Import critial libraries" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "%config InlineBackend.close_figures = False\n", "%matplotlib inline\n", "\n", "import numpy as np # fundamental package for scientific computing, handles arrays and math\n", "import matplotlib.pyplot as plt # standard Python plotting library\n", "from matplotlib.ticker import MaxNLocator # so we can force integer tick labels later\n", "\n", "# import the primary functions from the tdt library only\n", "from tdt import read_block, epoc_filter, download_demo_data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Importing the Data\n", "This example uses our [example data sets](https://www.tdt.com/files/examples/TDTExampleData.zip). To import your own data, replace BLOCK_PATH with the full path to your own data block.\n", "\n", "In Synapse, you can find the block path in the database. Go to Menu > History. Find your block, then Right-Click > Copy path to clipboard." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "demo data ready\n" ] } ], "source": [ "download_demo_data()\n", "BLOCK_PATH = 'data/Algernon-180308-130351'" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Set up the varibles for the data you want to extract. We will extract channel 1 from the eNe1 snippet data store, created by the PCA Sorting gizmo, and use our PulseGen epoc event `PC0/` as our stimulus onset." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "REF_EPOC = 'PC0/'\n", "SNIP_STORE = 'eNe1'\n", "SORTID = 'TankSort'\n", "CHANNEL = 3\n", "SORTCODE = 0 # set to 0 to use all sorts\n", "TRANGE = [-0.3, 0.8]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now read the specified data from our block into a Python structure. The `nodata` flag means that we are only intereseted in the snippet timestamps, not the actual snippet waveforms in this example." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "read from t=0s to t=61.23s\n" ] } ], "source": [ "data = read_block(BLOCK_PATH, evtype=['epocs', 'snips', 'scalars'], sortname=SORTID, channel=CHANNEL, nodata=1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Use epoc_filter to extract data around our epoc event\n", "Using the `t` parameter extracts data only from the time range around our epoc event." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "raster_data = epoc_filter(data, REF_EPOC, t=TRANGE)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Adding the `tref` flag makes all of the timestamps relative to the epoc event, which is ideal for generating histograms." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "hist_data = epoc_filter(data, REF_EPOC, t=TRANGE, tref=1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And that's it! Your data is now in Python. The rest of the code is a simple plotting example. First, we'll find matching timestamps for our selected sort code (unit)." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "ts = raster_data.snips[SNIP_STORE].ts\n", "if SORTCODE != 0:\n", " i = np.where(raster_data.snips[SNIP_STORE].sortcode == SORTCODE)[0]\n", " ts = ts[i]\n", "if len(ts) == 0:\n", " raise Exception('no matching timestamps found')\n", "\n", "num_trials = raster_data.time_ranges.shape[1]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Make the histogram plot" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig, (ax1, ax2) = plt.subplots(2, 1, sharex=True, figsize=(5, 8))\n", "\n", "hist_ts = hist_data.snips[SNIP_STORE].ts\n", "nbins = np.int64(np.floor(len(hist_ts)/10.))\n", "hist_n = ax1.hist(hist_ts, nbins)[0]\n", "\n", "ax1.axis('tight')\n", "ax1.set_xlim(left=TRANGE[0], right=TRANGE[0]+TRANGE[1])\n", "ax1.set_ylabel('Count',fontsize=16)\n", "ax1.set_title('Peristimulus\\nChannel {0}, n = {1} trials'.format(CHANNEL, num_trials))\n", "ax1.yaxis.set_major_locator(MaxNLocator(integer=True))\n", "\n", "# Draw a vertical line at t=0.\n", "ax1.plot([0, 0], [0, np.max(hist_n)], 'r-', linewidth=3)\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Creating the Raster Plot" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# For the raster plot, make an array of lists containing timestamps for each trial.\n", "all_ts = [[] for x in range(num_trials)]\n", "all_y = [[] for x in range(num_trials)]\n", "for trial in range(num_trials):\n", " trial_on = raster_data.time_ranges[0, trial]\n", " trial_off = raster_data.time_ranges[1, trial]\n", " ind1 = ts >= trial_on\n", " ind2 = ts < trial_off\n", " trial_ts = ts[ind1 & ind2]\n", " all_ts[trial] = trial_ts - trial_on + TRANGE[0]\n", " all_y[trial] = (trial+1) * np.ones(len(trial_ts))\n", "\n", "all_x = np.concatenate(all_ts)\n", "all_y = np.concatenate(all_y)\n", "\n", "# Make the raster plot.\n", "ax2.plot(all_x, all_y, 'k.', markersize=3)\n", "ax2.axis('tight')\n", "ax2.set_xlim(left=TRANGE[0], right=TRANGE[0]+TRANGE[1])\n", "ax2.set_xlabel('Trial Window, s',fontsize=16)\n", "ax2.set_ylabel('Trial Number',fontsize=16)\n", "ax2.set_title('Raster\\nChannel {0}, n = {1} trials'.format(CHANNEL, num_trials))\n", "\n", "# Draw a vertical line at t=0.\n", "ax2.plot([0, 0], [0, trial+2], 'r-', linewidth=3)\n", "\n", "ax2.yaxis.set_major_locator(MaxNLocator(integer=True))\n", "\n", "plt.show()" ] } ], "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.7.1" } }, "nbformat": 4, "nbformat_minor": 2 }