summaryrefslogtreecommitdiff
path: root/firmware/Run_analysis.ipynb
blob: 3c4be49b9dc9327a7b94f09769b4ca8a7fd51c53 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 193,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from matplotlib import pyplot as plt\n",
    "%matplotlib inline\n",
    "import numpy as np\n",
    "import numpy.polynomial.polynomial as poly\n",
    "\n",
    "import itertools\n",
    "import sqlite3"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "db = sqlite3.connect('results.sqlite3')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 222,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "def fetch_run(name_or_id):\n",
    "    if type(name_or_id) is str:\n",
    "        runs = db.execute('SELECT run_id FROM runs WHERE name LIKE ?', (run_name,)).fetchall()\n",
    "        if len(runs) > 1:\n",
    "            raise ValueError('Ambiguous run name {} matches run ids {}'.format(run_name, runs))\n",
    "    \n",
    "        ((run_id,),), run_name = runs, name_or_id\n",
    "    else:\n",
    "        run_id, (run_name,) = name_or_id, db.execute('SELECT name FROM runs WHERE run_id == ?', (name_or_id,)).fetchone()\n",
    "    \n",
    "    data = db.execute('''\n",
    "        SELECT channel, duty_cycle, voltage, voltage_stdev FROM measurements\n",
    "        WHERE run_id == ?\n",
    "        ORDER BY channel ASC, duty_cycle ASC;\n",
    "        ''', (run_id,)).fetchall()\n",
    "    \n",
    "    _ch, cal_duty, *cal = data[0]\n",
    "    assert cal_duty == 0\n",
    "    grouped = {ch: [(duty, volt, stdev) for _ch, duty, volt, stdev in data]\n",
    "               for ch, data in itertools.groupby(data, lambda elem: elem[0]) if ch != -1}\n",
    "    return (run_id, run_name), grouped, cal"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 243,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "def plot_run(name_or_id):\n",
    "    (run_id, run_name), data, cal = fetch_run(name_or_id)\n",
    "    \n",
    "    fig, ax = plt.subplots(figsize=(12,8))\n",
    "    ax.set_title('Run {} id {}'.format(run_name, run_id))\n",
    "    ax.set_xscale('log')\n",
    "    ax.set_yscale('log')\n",
    "\n",
    "    min_x = 1e9\n",
    "    max_y = 0\n",
    "    cal_volt, cal_stdev = cal\n",
    "    for ch in data:\n",
    "        ch_data = data[ch]\n",
    "        duty, volt, stdev = zip(*ch_data)\n",
    "        vref = volt[0] - cal_volt\n",
    "        volt = (np.array(volt) - cal_volt) / vref\n",
    "        stdev = np.array(stdev) / vref\n",
    "        max_y = max(max(volt), max_y)\n",
    "        min_x = min(min(duty), min_x)\n",
    "        ax.errorbar(duty, volt, yerr=stdev)\n",
    "    \n",
    "    # reuse latest duty cycles here\n",
    "    ax.set_xticks(duty)\n",
    "    ax.set_xticklabels([str(i) for i in range(len(duty))])\n",
    "    ax.set_xlabel('bit index')\n",
    "    ax.set_yticks([2**i for i in range(len(duty))])\n",
    "    ax.set_yticklabels([str(2**i) for i in range(len(duty))])\n",
    "    \n",
    "    ax.set_xlim([min_x*0.9, 1.1])\n",
    "    ax.set_ylim([0, max_y*1.1])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 245,
   "metadata": {
    "collapsed": false,
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7880f51ae3c8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_run(37)"
   ]
  }
 ],
 "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.5.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}