{ "nbformat": 4, "nbformat_minor": 0, "metadata": { "colab": { "name": "CueingBehaviourAnalysis_Colab_Winter2019", "version": "0.3.2", "provenance": [], "collapsed_sections": [], "toc_visible": true, "include_colab_link": true }, "kernelspec": { "name": "python3", "display_name": "Python 3" } }, "cells": [ { "cell_type": "markdown", "metadata": { "id": "view-in-github", "colab_type": "text" }, "source": [ "\"Open" ] }, { "metadata": { "id": "l_ZRAtVY8nJX", "colab_type": "text" }, "cell_type": "markdown", "source": [ "# CueingBehaviourAnalysis_Colab_Winter2019\n", "\n", "The cueing task can ellicit a number of reliable changes. A central cue indicates the location of an upcoming target onset. Here the task can be changed to be perfectly predictive, or have some level of cue validity. Task is to indicate the orientation of a spatial grating on the target, up for vertical, right for horizontal.\n", "\n", "ERP - Validly cued targets ellict larger ERP's than invalidly cued targets\n", "\n", "Response ERPs - Validly cued targets are more quickly identified and better identified\n", "\n", "Oscillations - Alpha power lateralizes after a spatial cue onset preceeding the upcoming onset of a target. Alpha power becomes smaller contraleral to the target side, and larger ipsilateral with the target." ] }, { "metadata": { "id": "cRRt1FLy8xJs", "colab_type": "code", "outputId": "099b4593-824c-4c39-aa7d-7b44fcfefefa", "colab": { "base_uri": "https://localhost:8080/", "height": 170 } }, "cell_type": "code", "source": [ "!git clone https://github.com/kylemath/eeg-notebooks --recurse-submodules\n", "%cd eeg-notebooks/data/visual/cueing/" ], "execution_count": 1, "outputs": [ { "output_type": "stream", "text": [ "Cloning into 'eeg-notebooks'...\n", "remote: Enumerating objects: 66, done.\u001b[K\n", "remote: Counting objects: 100% (66/66), done.\u001b[K\n", "remote: Compressing objects: 100% (48/48), done.\u001b[K\n", "remote: Total 2179 (delta 35), reused 33 (delta 14), pack-reused 2113\u001b[K\n", "Receiving objects: 100% (2179/2179), 163.63 MiB | 18.53 MiB/s, done.\n", "Resolving deltas: 100% (929/929), done.\n", "Checking out files: 100% (641/641), done.\n", "/content/eeg-notebooks/data/visual/cueing\n" ], "name": "stdout" } ] }, { "metadata": { "id": "G_2iJn-A8hxR", "colab_type": "code", "colab": {} }, "cell_type": "code", "source": [ "import scipy.io as sio \n", "import os\n", "import numpy as np \n", "import matplotlib.pyplot as plt \n", "import pandas as pd " ], "execution_count": 0, "outputs": [] }, { "metadata": { "id": "BU6QcVVh8sXM", "colab_type": "text" }, "cell_type": "markdown", "source": [ "# Analyze .mat behavioural data for Accuracy and RT\n" ] }, { "metadata": { "id": "Yh-JuBMQ7x5T", "colab_type": "text" }, "cell_type": "markdown", "source": [ "Load in subjects" ] }, { "metadata": { "id": "ynN5eXFBAy-g", "colab_type": "code", "colab": {} }, "cell_type": "code", "source": [ "# # Fall 2018\n", "subs = [101, 102, 103, 104, 106, 108, 109, 110, 111, 112,\n", " 202, 203, 204, 205, 207, 208, 209, 210, 211, \n", " 301, 302, 303, 304, 305, 306, 307, 308, 309]\n", "\n", "# 105 - no trials in one condition\n", "\n", "# # Winter 2019\n", "# subs = [1101, 1102, 1103, 1104, 1105, 1106, 1108, 1109, 1110,\n", "# 1202, 1203, 1205, 1206, 1209, 1210, 1211, 1215,\n", "# 1301, 1302, 1313, \n", "# 1401, 1402, 1403, 1404, 1405, 1408, 1410, 1411, 1412, 1413, 1413, 1414, 1415, 1416]\n", "\n", "# # 1107 - no csv session 1\n", "# # 1201 - no csv session 1\n", "# # 1304 - Muse 2\n", "# # 1308 - Muse 2\n", "# # 1311 - Muse 2\n", "# # 1314 - Muse 2\n", "# # 1407 - only session1\n", "\n", "# Both \n", "\n", "# Fall 2018\n", "# subs = [101, 102, 103, 104, 106, 108, 109, 110, 111, 112,\n", "# 202, 203, 204, 205, 207, 208, 209, 210, 211, \n", "# 301, 302, 303, 304, 305, 306, 307, 308, 309,\n", "# 1101, 1102, 1103, 1104, 1105, 1106, 1108, 1109, 1110,\n", "# 1202, 1203, 1205, 1206, 1209, 1210, 1211, 1215,\n", "# 1301, 1302, 1313, \n", "# 1401, 1402, 1403, 1404, 1405, 1408, 1410, 1411, 1412, 1413, 1413, 1414, 1415, 1416]\n" ], "execution_count": 0, "outputs": [] }, { "metadata": { "id": "KbqZDtIK8QTM", "colab_type": "text" }, "cell_type": "markdown", "source": [ "Set some settings" ] }, { "metadata": { "id": "wCLpWFEs8Qd-", "colab_type": "code", "colab": {} }, "cell_type": "code", "source": [ "# basic numbers\n", "n_subs = len(subs)\n", "n_sesh = 2\n", "conditions = ['valid','invalid']\n", "n_cond = len(conditions)\n", "\n", "# cutoff trials that are too slow or fast\n", "rt_toofast = 250\n", "rt_tooslow = 1500\n", "\n", "#creates arrays to save output\n", "count_rt = np.zeros((n_subs, n_sesh, n_cond))\n", "median_rt = np.zeros((n_subs, n_sesh, n_cond))\n", "prop_accu = np.zeros((n_subs, n_sesh, n_cond))" ], "execution_count": 0, "outputs": [] }, { "metadata": { "id": "cekTLbOS2WCA", "colab_type": "text" }, "cell_type": "markdown", "source": [ "Single Subject example" ] }, { "metadata": { "id": "CUhI539X2X7a", "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", "height": 748 }, "outputId": "097d3297-c72a-4f2f-b69e-e1c0bec37f86" }, "cell_type": "code", "source": [ "#select single subject\n", "sub = subs[0]\n", "print('Subject - ' + str(sub))\n", "\n", "#just one session \n", "sesh = 1\n", "\n", "#load file\n", "path = './subject' + str(sub) + '/session' + str(sesh) + '/'\n", "file = [x for x in os.listdir(path) if x.endswith('.mat')][0]\n", "output_dict = sio.loadmat(path + file)\n", "print(path + file)\n", "\n", "#pull out important info\n", "output = output_dict['output']\n", "accuracy = output[:,6]\n", "rt = output[:,7]\n", "validity = output[:,3]\n", "print(accuracy,rt,validity)\n", "\n", "# median rt on each condition\t\n", "print('')\n", "print(rt)\n", "print(rt[validity == 0])\n", "print(rt[(validity == 0) & (rt <= rt_tooslow)])\n", "\n", "validRT \t= np.nanmedian(rt[ (validity == 1) &\n", " (rt >= rt_toofast) &\n", " (rt <= rt_tooslow)])\n", "\n", "print('Valid RT = ' + str(validRT) + ' ms')\n", "\n", "InvalidRT = np.nanmedian(rt[ (validity == 0) &\n", " (rt >= rt_toofast) &\n", " (rt <= rt_tooslow)]) \n", "\n", "print('Invalid RT = ' + str(InvalidRT) + ' ms')" ], "execution_count": 31, "outputs": [ { "output_type": "stream", "text": [ "Subject - 101\n", "./subject101/session1/subject101_session1_behOutput_2018-11-20-16.49.27.mat\n", "[1. 1. 0. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 0. 1. 1. 1. 1. 1. 1.\n", " 1. 1. 1. 1. 1. 1. 1. 1. 0. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.\n", " 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.\n", " 1.] [267.486316 368.197394 359.114961 443.325697 400.459867 338.903969\n", " 335.497442 344.23244 356.226233 413.148977 379.451902 316.690498\n", " 354.088677 373.602933 309.049937 434.614427 334.242317 347.36567\n", " 559.56115 322.360502 342.381079 296.946102 363.025883 466.486784\n", " 405.095436 319.433791 396.683878 383.602173 340.87966 354.004383\n", " 376.375779 426.027515 354.717818 369.7502 422.330031 419.2258\n", " 386.381543 359.174393 349.714812 356.469947 313.615834 322.796616\n", " 441.424417 365.827293 374.314179 399.225807 419.822978 376.170782\n", " 408.44391 410.311049 367.621084 317.141214 397.751161 356.786541\n", " 358.868281 510.4043 482.490751 401.646274 389.68048 401.859856\n", " 343.478114 402.49184 362.675449 414.434056 419.887543 529.755306\n", " 370.726955 376.761684 392.066039 383.450714 339.717042 411.304441\n", " 437.624038] [1. 0. 1. 1. 0. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 0. 0. 1. 1. 0. 0. 1. 1. 1.\n", " 1. 1. 1. 1. 1. 1. 1. 1. 0. 1. 1. 0. 1. 1. 0. 1. 1. 1. 1. 1. 1. 1. 0. 1.\n", " 1. 1. 0. 1. 1. 1. 1. 1. 1. 1. 1. 1. 0. 1. 0. 1. 1. 1. 1. 1. 0. 1. 1. 1.\n", " 1.]\n", "\n", "[267.486316 368.197394 359.114961 443.325697 400.459867 338.903969\n", " 335.497442 344.23244 356.226233 413.148977 379.451902 316.690498\n", " 354.088677 373.602933 309.049937 434.614427 334.242317 347.36567\n", " 559.56115 322.360502 342.381079 296.946102 363.025883 466.486784\n", " 405.095436 319.433791 396.683878 383.602173 340.87966 354.004383\n", " 376.375779 426.027515 354.717818 369.7502 422.330031 419.2258\n", " 386.381543 359.174393 349.714812 356.469947 313.615834 322.796616\n", " 441.424417 365.827293 374.314179 399.225807 419.822978 376.170782\n", " 408.44391 410.311049 367.621084 317.141214 397.751161 356.786541\n", " 358.868281 510.4043 482.490751 401.646274 389.68048 401.859856\n", " 343.478114 402.49184 362.675449 414.434056 419.887543 529.755306\n", " 370.726955 376.761684 392.066039 383.450714 339.717042 411.304441\n", " 437.624038]\n", "[368.197394 400.459867 434.614427 334.242317 322.360502 342.381079\n", " 354.717818 419.2258 349.714812 419.822978 367.621084 343.478114\n", " 362.675449 392.066039]\n", "[368.197394 400.459867 434.614427 334.242317 322.360502 342.381079\n", " 354.717818 419.2258 349.714812 419.822978 367.621084 343.478114\n", " 362.675449 392.066039]\n", "Valid RT = 376.37577899999997 ms\n", "Invalid RT = 365.14826649988663 ms\n" ], "name": "stdout" } ] }, { "metadata": { "id": "1JIk1YN18Qnb", "colab_type": "text" }, "cell_type": "markdown", "source": [ "Loop through subjects" ] }, { "metadata": { "id": "iqSua1dT8Qxq", "colab_type": "code", "outputId": "d6f4bdd6-4f26-4683-dac9-f7d619481ccd", "colab": { "base_uri": "https://localhost:8080/", "height": 493 } }, "cell_type": "code", "source": [ "# loop through subjects\n", "for isub, sub in enumerate(subs):\n", "\tprint('Subject - ' + str(sub))\n", "\tfor sesh in range(n_sesh):\n", "\t\t# get the path and file name and load data\n", "\t\tpath = './subject' + str(sub) + '/session' + str(sesh+1) + '/'\n", "\t\tfile = [x for x in os.listdir(path) if x.endswith('.mat')][0]\n", "\t\toutput_dict = sio.loadmat(path + file)\n", "\n", "\t\t# pull out important stuff\n", "\t\toutput = output_dict['output']\n", "\t\taccuracy = output[:,6]\n", "\t\trt = output[:,7]\n", "\t\tvalidity = output[:,3]\n", " \n", "\t\t# median rt on each condition\t\n", "\t\tmedian_rt[isub,sesh,:] \t= [ np.nanmedian(rt[ (validity == 1) &\n", "\t\t\t\t\t\t\t\t\t\t\t\t\t \t (rt >= rt_toofast) &\n", "\t\t\t\t\t\t\t\t\t\t\t\t\t \t (rt <= rt_tooslow)]),\n", "\t\t\t\t\t\t\t\t\t np.nanmedian(rt[ (validity == 0) &\n", "\t\t\t\t\t\t\t\t\t\t\t\t\t\t (rt >= rt_toofast) &\n", "\t\t\t\t\t\t\t\t\t\t\t\t\t\t (rt <= rt_tooslow)]) ]\n", " \n", " \n", "\t\t# proportion accurate (number accurate / count)\t\t\t\t\t\t\t\n", "\t\tprop_accu[isub,sesh,:] = [\tnp.sum(accuracy[(validity == 1) &\n", "\t\t\t\t\t\t\t\t\t\t\t\t\t\t (rt >= rt_toofast) &\n", "\t\t\t\t\t\t\t\t\t\t\t\t\t\t (rt <= rt_tooslow)]) / \n", "\t\t\t\t\t\t\t\t\tnp.sum((validity == 1) & (rt >= rt_toofast) & (rt <= rt_tooslow)),\n", " \t\t\t\t\t\t\t\t\tnp.sum(accuracy[(validity == 0) &\n", "\t\t\t\t\t\t\t\t\t\t\t\t\t\t (rt >= rt_toofast) &\n", "\t\t\t\t\t\t\t\t\t\t\t\t\t\t (rt <= rt_tooslow)]) /\n", "\t\t\t\t\t\t\t\t\tnp.sum((validity == 0) & (rt >= rt_toofast) & (rt <= rt_tooslow)) ]\n", "\t\n" ], "execution_count": 25, "outputs": [ { "output_type": "stream", "text": [ "Subject - 101\n", "Subject - 102\n", "Subject - 103\n", "Subject - 104\n", "Subject - 106\n", "Subject - 108\n", "Subject - 109\n", "Subject - 110\n", "Subject - 111\n", "Subject - 112\n", "Subject - 202\n", "Subject - 203\n", "Subject - 204\n", "Subject - 205\n", "Subject - 207\n", "Subject - 208\n", "Subject - 209\n", "Subject - 210\n", "Subject - 211\n", "Subject - 301\n", "Subject - 302\n", "Subject - 303\n", "Subject - 304\n", "Subject - 305\n", "Subject - 306\n", "Subject - 307\n", "Subject - 308\n", "Subject - 309\n" ], "name": "stdout" } ] }, { "metadata": { "id": "irrH-9dP8Q7J", "colab_type": "text" }, "cell_type": "markdown", "source": [ "Average over sessions and print data" ] }, { "metadata": { "id": "uU1N8pI_8RE1", "colab_type": "code", "outputId": "420d59ef-15ea-40d0-eddf-660493bce92f", "colab": { "base_uri": "https://localhost:8080/", "height": 1003 } }, "cell_type": "code", "source": [ " # Summary stats and collapse sessions\n", "Out_median_RT = np.squeeze(np.nanmean(median_rt,axis=1))\n", "Out_prop_accu = np.squeeze(np.nanmean(prop_accu,axis=1))\n", "\n", "print('Median RT')\n", "print(Out_median_RT)\n", "print('Proportion Accurate')\n", "print(Out_prop_accu)" ], "execution_count": 32, "outputs": [ { "output_type": "stream", "text": [ "Median RT\n", "[[361.7079635 364.45366275]\n", " [547.10713075 611.45526175]\n", " [600.073256 587.019756 ]\n", " [528.29669975 537.8690605 ]\n", " [419.24263125 439.1580675 ]\n", " [456.3330375 631.1320265 ]\n", " [446.95026625 556.038382 ]\n", " [484.0763345 478.4887 ]\n", " [443.5412585 472.331497 ]\n", " [436.66653125 501.3115865 ]\n", " [495.63977675 587.358365 ]\n", " [520.97468575 973.144689 ]\n", " [395.5098235 370.232933 ]\n", " [489.59985525 560.08098575]\n", " [455.6651645 500.22833625]\n", " [662.9326765 643.0934405 ]\n", " [488.56224425 474.7125945 ]\n", " [482.1316255 543.0173155 ]\n", " [713.4103845 894.0804795 ]\n", " [485.48053725 533.6649235 ]\n", " [464.47033775 517.368321 ]\n", " [488.45884825 500.39610975]\n", " [527.5814465 533.4898155 ]\n", " [477.23867575 446.72875575]\n", " [484.94210575 578.6717025 ]\n", " [681.7458885 804.780758 ]\n", " [419.736862 485.569911 ]\n", " [435.42846425 437.12191 ]]\n", "Proportion Accurate\n", "[[0.98305085 0.96428571]\n", " [1. 1. ]\n", " [0.91680961 0.88974359]\n", " [0.98809524 1. ]\n", " [0.9822995 1. ]\n", " [0.95403439 0.6 ]\n", " [0.92346939 0.97727273]\n", " [0.99019608 0.97058824]\n", " [0.97395994 1. ]\n", " [0.68275862 0.83333333]\n", " [0.89914021 0.89732143]\n", " [0.92080745 0.73333333]\n", " [0.94716042 0.91666667]\n", " [0.95755518 1. ]\n", " [0.95959184 0.94949495]\n", " [0.88296296 0.94117647]\n", " [0.90046296 0.92857143]\n", " [0.96551724 0.875 ]\n", " [0.91171329 0.92857143]\n", " [0.98333333 0.9 ]\n", " [0.94733656 0.87820513]\n", " [0.94187987 0.95833333]\n", " [0.96479592 0.94736842]\n", " [1. 0.90833333]\n", " [0.94186047 0.8 ]\n", " [1. 1. ]\n", " [0.97222222 0.97222222]\n", " [0.95718391 1. ]]\n" ], "name": "stdout" } ] }, { "metadata": { "id": "hyGntPA6-m2J", "colab_type": "text" }, "cell_type": "markdown", "source": [ "Plot barplot of results" ] }, { "metadata": { "id": "k9-zp2mS92Pi", "colab_type": "code", "outputId": "fac0a794-ac31-405d-aa7c-b77beaf450dc", "colab": { "base_uri": "https://localhost:8080/", "height": 376 } }, "cell_type": "code", "source": [ "# bar plot results\n", "plt.figure()\n", "# Accuracy\n", "ax = plt.subplot(211)\n", "plt.bar([0,1], np.nanmean(Out_prop_accu,axis=0), 0.6, yerr = np.nanstd(Out_prop_accu,axis=0)/np.sqrt(n_subs))\n", "plt.ylim(.9,.96)\n", "plt.title('Accuracy')\n", "plt.ylabel('Proportion Correct')\n", "ax.set_xticks([0,1])\n", "ax.set_xticklabels(conditions)\n", "# RT\n", "ax = plt.subplot(212)\n", "plt.bar([0,1], np.nanmean(Out_median_RT,axis=0), 0.6, yerr = np.nanstd(Out_median_RT,axis=0)/np.sqrt(n_subs))\n", "plt.ylim(450,600)\n", "plt.title('Reaction Time')\n", "plt.ylabel('RT (ms)')\n", "plt.xlabel('Condition')\n", "ax.set_xticks([0,1])\n", "ax.set_xticklabels(conditions)\n", "plt.show()\n" ], "execution_count": 33, "outputs": [ { "output_type": "display_data", "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAfUAAAFnCAYAAAC/5tBZAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzt3Xl4THf///HnyVY0QzIkUUG5U1q3\nPUiD2iLEVrVGqOUWpIpWi1pSSpsu1NZaSummVJtvFUUXbhrdaFSparrYboSWzEREJJZI5veHX+eW\nuyIJmQnj9bgulznnzPmc95krM685n3PmfAybzWZDREREbnluJV2AiIiIFA+FuoiIiItQqIuIiLgI\nhbqIiIiLUKiLiIi4CIW6iIiIi1Coi7i4qKgounbtWtJliIgTKNRFXNi+ffswmUxUqlSJ3bt3l3Q5\nIuJgCnURF7ZmzRo6dOhAly5dWLt2rX3+2rVriYiIICIigqeeeoqLFy/mOz8xMZF27drZ171yev78\n+UyePJlevXrxzjvvkJuby7PPPktERARhYWE89dRTZGdnA3Dq1CmGDx9O27ZtefDBB/nmm2/YunUr\nXbp0yVNzjx492Lx5s6NfGhGXpFAXcVE5OTn8+9//JiIigrZt2/LVV19x8eJFjh07xowZM3j33Xf5\n/PPPOXfuHO+++26+8wvy5ZdfsmTJEv71r3/x73//m507d7JhwwY+++wzkpKS+PTTTwGYPXs2QUFB\nbNmyhRkzZjB27FiaNWuGxWLht99+A+CPP/7g6NGjtGzZ0qGvjYir8ijpAkTEMb755hvq1q2Lt7c3\nACEhISQkJHD69GkaNmxIQEAAcDls3d3d+eijj646/4cffrjmdurXr4/ZbAYgIiKCNm3a4OnpCUDd\nunVJTk4GLof/0qVLAfjnP//Jli1b8PLyIiIigk8++YT77ruPzZs307ZtW7y8vIr/BRG5DSjURVzU\n6tWr+eqrr2jcuDFw+cg9PT2dBg0aULZsWfvz7rjjDgDS0tKuOr8g5cqVsz8+deoUcXFx/PLLLxiG\ngdVqZdCgQQCcPn0ak8lkf+5fXzY6d+7MpEmTGDt2LJs3b2bIkCHXucciolAXcUHp6ens2LGDxMRE\n+1HvpUuXaNWqFcHBwaSlpdmfe/bsWc6fP4+vr2+ei+n+mu/u7k5OTo59/pkzZ/Ld7ty5c/Hw8GD9\n+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\nlFMXUMlSN5zI7Ufv+5JVot3vIiIi4hwKdRERERehUBcREXERCnUREREXoVAXERFxEQp1ERERF6FQ\nFxERcREKdRERERehUBcREXERCnUREREXoVAXERFxEQp1ERERF6FQFxGRQmvUqA7VqlUr6TIkHwp1\nERERF+Hw8dQBEhMTGT16NDVq1ACgZs2aWCwW0tLSADh9+jQNGjTgkUce4cEHH6ROnToA+Pr6Mm/e\nPGeUKCIicstzSqgDhISE5BvQkyZNonfv3gBUr16d5cuXO6ssERERl1Hi3e+HDh0iIyODevXqlXQp\nIiIitzSnhfqBAwcYPnw4ffv25dtvv7XPf/fdd+nfv7992mq18vjjjxMVFcW6deucVZ6IiMgtz7DZ\nbDZHb+TkyZP88MMPdOzYkeTkZAYOHMimTZsA6NmzJ+vXrwfg7NmzbNy4ka5du5KRkUHv3r15//33\n8ff3z7ftS5dy8PBwd/QuiIgI2K98P3z4cInWIVfnlHPqAQEBdOrUCYCqVatSoUIFTp48ydGjR/N0\nu3t7e9OzZ08AzGYzderU4dChQ9cM9bS0LMcWL9fk52fCYsko6TJExElyc224uRl635cgPz9Tvsuc\n0v2+bt063nzzTQAsFgupqakEBASwd+9e7rvvPvvzvvvuO1566SUAsrKy+O2336hevbozShQREbnl\nOeVIPSwsjHHjxrFlyxays7OZNm0aXl5eWCwWqlatan9e48aNWbt2LX369CEnJ4eYmBgCAgKcUaKI\niMgtzynn1B1JXUAlS93vIreXRo3q4OZm8P33e0u6lNtWiXe/i4iIiOMp1EVERFyEQl1ERMRFKNRF\nRERchEJdRETERSjURUREXIRCXURExEUo1EVERFyEQl1ERMRFKNRFRERchEJdRETERSjURUREXIRT\nRmkTEbmZRU//oqRLuGVY088Bes2K4q2JYU7blo7URUREXITDj9QTExMZPXo0NWrUAKBmzZpkZmaS\nlJSEj48PAEOGDKF169asW7eOZcuW4ebmRmRkJL1793Z0eSIiIi7DKd3vISEhzJs3zz49ceJExowZ\nQ5s2bezzsrKyWLhwIatWrcLT05NevXrRrl07e/CLiIjItd003e979uyhbt26mEwmSpUqRXBwMLt2\n7SrpskRERG4ZTjlSP3DgAMOHDyc9PZ1Ro0YBsGLFCt5++23Kly/PlClTsFqtmM1m+zpmsxmLxVJg\n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\nUKH++eef39BGQkJCmDdvnn160qRJ9OvXj44dOzJnzhxWrVpFt27dWLhwIatWrcLT05NevXrRrl07\nfHx8bmjbIiIit4tChXpgYGCxbjQxMZFnn30WgDZt2vDWW29RvXp16tati8l0efD34OBgdu3aRVhY\n8Q4uLyIi4qoKFeo36sCBAwwfPpz09HRGjRrFuXPn8PLyAqB8+fJYLBasVitms9m+jtlsxmKxOKM8\nERERl+DwUK9WrRqjRo2iY8eOJCcnM3DgQHJycuzLbTbbVdfLb/7/8vUtg4eHe7HUKkXj5nb5gkk/\nP1MJVyIicvNy5mekw0M9ICCATp06AVC1alUqVKjA3r17OX/+PKVKleLkyZP4+/vj7++P1Wq1r5eS\nkkKDBg0KbD8tLcthtcu15ebacHMzsFgySroUEZGbVnF/Rl7rS8J1/aStKNatW8ebb74JgMViITU1\nlR49erBx40YANm3aRIsWLahfvz579+7lzJkzZGZmsmvXLho3buzo8kRERFyGw4/Uw8LCGDduHFu2\nbCE7O5tp06ZRq1YtJkyYQHx8PJUqVaJbt254enoyduxYhgwZgmEYjBw50n7RnDNFT//C6du8VVnT\nzwF6zYrirYm68FNEHMfhoe7t7c3ixYv/Nv/tt9/+27wOHTrQoUMHR5ckIiLikhze/S4iIiLOoVAX\nERFxEQp1ERERF6FQFxERcREKdRERERehUBcREXERCnUREREXoVAXERFxEQp1ERERF6FQFxERcREK\ndRERERehUBcREXERDh/QRVxX26FLS7oEERG5go7URUREXITTjtTPnz9Ply5dGDFiBFu3biUtLQ2A\n06dP06BBAx555BEefPBB6tSpA4Cvry/z5s1zVnkiIiK3PKeF+qJFiyhXrhxAnrCeNGkSvXv3BqB6\n9eosX77cWSWJiIi4FKd0vx88eJADBw7QunXrPPMPHTpERkYG9erVc0YZIiIiLs0pR+ozZsxgypQp\nrF27Ns/8d999l/79+9unrVYrjz/+OCkpKfTr14+uXbsW2Lavbxk8PNyLvWYRR/DzM5V0CSLiZM58\n3zs81NeuXUuDBg2oUqVKnvkXL17khx9+YNq0aQD4+PgwevRounbtSkZGBr179yY0NBR/f/9rtp+W\nluWo0kWKncWSUdIliIiTFff7/lpfEhwe6lu3biU5OZmtW7dy4sQJvLy8qFixIjabLU+3u7e3Nz17\n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\n", "text/plain": [ "
" ] }, "metadata": { "tags": [] } } ] }, { "metadata": { "id": "2gm7igaq-q9t", "colab_type": "text" }, "cell_type": "markdown", "source": [ "Output spreadsheet\n", "\n" ] }, { "metadata": { "id": "yzWBBoMW-qnK", "colab_type": "code", "outputId": "b29b139e-265c-4464-c5a0-e09beff824ee", "colab": { "base_uri": "https://localhost:8080/", "height": 510 } }, "cell_type": "code", "source": [ "## CSV output\n", "column_dict = {'Participant':subs,\n", "\t\t\t\t'AccValid':Out_prop_accu[:,0],\n", "\t\t\t\t'AccInvalid':Out_prop_accu[:,1],\n", "\t\t\t\t'RTValid':Out_median_RT[:,0],\n", "\t\t\t\t'RTInvalid':Out_median_RT[:,1] }\n", "df = pd.DataFrame(column_dict)\n", "print(df)\n", "df.to_csv('375CueingBehPy.csv',index=False)\n" ], "execution_count": 34, "outputs": [ { "output_type": "stream", "text": [ " AccInvalid AccValid Participant RTInvalid RTValid\n", "0 0.964286 0.983051 101 364.453663 361.707963\n", "1 1.000000 1.000000 102 611.455262 547.107131\n", "2 0.889744 0.916810 103 587.019756 600.073256\n", "3 1.000000 0.988095 104 537.869061 528.296700\n", "4 1.000000 0.982299 106 439.158067 419.242631\n", "5 0.600000 0.954034 108 631.132027 456.333038\n", "6 0.977273 0.923469 109 556.038382 446.950266\n", "7 0.970588 0.990196 110 478.488700 484.076334\n", "8 1.000000 0.973960 111 472.331497 443.541259\n", "9 0.833333 0.682759 112 501.311586 436.666531\n", "10 0.897321 0.899140 202 587.358365 495.639777\n", "11 0.733333 0.920807 203 973.144689 520.974686\n", "12 0.916667 0.947160 204 370.232933 395.509823\n", "13 1.000000 0.957555 205 560.080986 489.599855\n", "14 0.949495 0.959592 207 500.228336 455.665165\n", "15 0.941176 0.882963 208 643.093440 662.932677\n", "16 0.928571 0.900463 209 474.712594 488.562244\n", "17 0.875000 0.965517 210 543.017316 482.131626\n", "18 0.928571 0.911713 211 894.080479 713.410385\n", "19 0.900000 0.983333 301 533.664923 485.480537\n", "20 0.878205 0.947337 302 517.368321 464.470338\n", "21 0.958333 0.941880 303 500.396110 488.458848\n", "22 0.947368 0.964796 304 533.489816 527.581447\n", "23 0.908333 1.000000 305 446.728756 477.238676\n", "24 0.800000 0.941860 306 578.671703 484.942106\n", "25 1.000000 1.000000 307 804.780758 681.745889\n", "26 0.972222 0.972222 308 485.569911 419.736862\n", "27 1.000000 0.957184 309 437.121910 435.428464\n" ], "name": "stdout" } ] } ] }