Skip to content

Commit 12c724b

Browse files
committed
refactor signals library
1 parent 8fa2040 commit 12c724b

File tree

2 files changed

+101
-61
lines changed

2 files changed

+101
-61
lines changed

devtests.ipynb

Lines changed: 67 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -29,25 +29,56 @@
2929
"name": "stdout",
3030
"output_type": "stream",
3131
"text": [
32-
"filename: 03700181.dat\n",
33-
"dirname: sampledata\n",
34-
"pbdir: None\n"
35-
]
36-
},
37-
{
38-
"ename": "UnboundLocalError",
39-
"evalue": "local variable 'nbytesload' referenced before assignment",
40-
"output_type": "error",
41-
"traceback": [
42-
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
43-
"\u001b[0;31mUnboundLocalError\u001b[0m Traceback (most recent call last)",
44-
"\u001b[0;32m<ipython-input-1-e525c7926607>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mwfdb\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0;31m# Testing rdsamp multiple samples per frame (and fmt 12)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m \u001b[0msig\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfields\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mwfdb\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msrdsamp\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'sampledata/03700181'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 4\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msig\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;36m20\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"\\n\\n\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msig\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mshape\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"\\n\\n\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
45-
"\u001b[0;32m/home/chen/Projects/wfdb-python/wfdb/records.py\u001b[0m in \u001b[0;36msrdsamp\u001b[0;34m(recordname, sampfrom, sampto, channels, pbdir)\u001b[0m\n\u001b[1;32m 862\u001b[0m \u001b[0msig\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfields\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mwfdb\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msrdsamp\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'macecgdb/test01_00s'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msampfrom\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m800\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mchannels\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m3\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 863\u001b[0m \"\"\"\n\u001b[0;32m--> 864\u001b[0;31m \u001b[0mrecord\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mrdsamp\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mrecordname\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msampfrom\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msampto\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mchannels\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mpbdir\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 865\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 866\u001b[0m \u001b[0msignals\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mrecord\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mp_signals\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
46-
"\u001b[0;32m/home/chen/Projects/wfdb-python/wfdb/records.py\u001b[0m in \u001b[0;36mrdsamp\u001b[0;34m(recordname, sampfrom, sampto, channels, physical, pbdir, m2s)\u001b[0m\n\u001b[1;32m 695\u001b[0m record.d_signals = _signals.rdsegment(record.filename, dirname, pbdir, record.nsig, record.fmt, record.siglen, \n\u001b[1;32m 696\u001b[0m \u001b[0mrecord\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbyteoffset\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mrecord\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msampsperframe\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mrecord\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mskew\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 697\u001b[0;31m sampfrom, sampto, channels)\n\u001b[0m\u001b[1;32m 698\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 699\u001b[0m \u001b[0;31m# Arrange/edit the object fields to reflect user channel and/or signal range input\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
47-
"\u001b[0;32m/home/chen/Projects/wfdb-python/wfdb/_signals.py\u001b[0m in \u001b[0;36mrdsegment\u001b[0;34m(filename, dirname, pbdir, nsig, fmt, siglen, byteoffset, sampsperframe, skew, sampfrom, sampto, channels)\u001b[0m\n\u001b[1;32m 300\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mfn\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mw_filename\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 301\u001b[0m signals[:, out_datchannel[fn]] = rddat(fn, dirname, pbdir, w_fmt[fn], len(datchannel[fn]), \n\u001b[0;32m--> 302\u001b[0;31m siglen, w_byteoffset[fn], w_sampsperframe[fn], w_skew[fn], sampfrom, sampto)[:, r_w_channel[fn]]\n\u001b[0m\u001b[1;32m 303\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 304\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0msignals\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
48-
"\u001b[0;32m/home/chen/Projects/wfdb-python/wfdb/_signals.py\u001b[0m in \u001b[0;36mrddat\u001b[0;34m(filename, dirname, pbdir, fmt, nsig, siglen, byteoffset, sampsperframe, skew, sampfrom, sampto)\u001b[0m\n\u001b[1;32m 339\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 340\u001b[0m \u001b[0;31m# Read the dat file into a np array and reshape.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 341\u001b[0;31m \u001b[0msig\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnbytesread\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mprocesswfdbbytes\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfilename\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdirname\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mpbdir\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfmt\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mstartbyte\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msampto\u001b[0m \u001b[0;34m-\u001b[0m \u001b[0msampfrom\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnsig\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msampsperframe\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfloorsamp\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 342\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 343\u001b[0m \u001b[0;31m# Shift the samples in the channels with skew if any\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
49-
"\u001b[0;32m/home/chen/Projects/wfdb-python/wfdb/_signals.py\u001b[0m in \u001b[0;36mprocesswfdbbytes\u001b[0;34m(filename, dirname, pbdir, fmt, startbyte, siglen, nsig, sampsperframe, floorsamp)\u001b[0m\n\u001b[1;32m 576\u001b[0m \u001b[0mnbytesload\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnsamp\u001b[0m \u001b[0;34m*\u001b[0m \u001b[0mbytespersample\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mfmt\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 577\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 578\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0msig\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnbytesload\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 579\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 580\u001b[0m \u001b[0;31m# Read bytes from a dat file, either local or remote\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
50-
"\u001b[0;31mUnboundLocalError\u001b[0m: local variable 'nbytesload' referenced before assignment"
32+
"[[ 1.88948535e-02 5.15576324e+01 -1.04000000e-01]\n",
33+
" [ 7.76038626e-03 5.13239875e+01 -9.30000000e-02]\n",
34+
" [ 2.36185669e-03 5.09345794e+01 -8.20000000e-02]\n",
35+
" [ 6.74816197e-04 5.03894081e+01 -7.15000000e-02]\n",
36+
" [ 6.74816197e-04 4.96105919e+01 -6.10000000e-02]\n",
37+
" [ 6.74816197e-04 4.87538941e+01 -5.05000000e-02]\n",
38+
" [ -3.03667289e-03 4.76635514e+01 -4.05000000e-02]\n",
39+
" [ -1.01222430e-03 4.64953271e+01 -3.05000000e-02]\n",
40+
" [ -3.03667289e-03 4.51713396e+01 -2.00000000e-02]\n",
41+
" [ 6.74816197e-04 4.37694704e+01 -8.50000000e-03]\n",
42+
" [ -3.03667289e-03 4.23676012e+01 4.00000000e-03]\n",
43+
" [ 6.74816197e-04 4.08878505e+01 1.75000000e-02]\n",
44+
" [ -4.72371338e-03 3.94859813e+01 3.05000000e-02]\n",
45+
" [ -3.03667289e-03 3.81619938e+01 4.25000000e-02]\n",
46+
" [ -3.03667289e-03 3.70716511e+01 5.35000000e-02]\n",
47+
" [ -1.01222430e-03 3.61370717e+01 6.35000000e-02]\n",
48+
" [ -4.72371338e-03 3.54361371e+01 7.40000000e-02]\n",
49+
" [ -3.03667289e-03 3.48130841e+01 8.60000000e-02]\n",
50+
" [ -1.58581806e-02 3.44236760e+01 9.95000000e-02]\n",
51+
" [ -5.29730715e-02 3.40342679e+01 1.14500000e-01]]\n",
52+
"\n",
53+
"\n",
54+
" (75000, 3) \n",
55+
"\n",
56+
"\n",
57+
"{'comments': [], 'units': ['mV', 'mmHg', 'mV'], 'signame': ['MCL1', 'ABP', 'RESP'], 'fs': 125.0}\n",
58+
"\n",
59+
"\n",
60+
"\n",
61+
"\n",
62+
"[[ -2.69926479e-02 3.06853583e+01 4.16500000e-01]\n",
63+
" [ 9.44742676e-03 3.07632399e+01 4.08500000e-01]\n",
64+
" [ 3.00293208e-02 3.08411215e+01 4.01500000e-01]\n",
65+
" [ 3.74522989e-02 3.09190031e+01 3.95000000e-01]\n",
66+
" [ 4.65623176e-02 3.09190031e+01 3.88000000e-01]\n",
67+
" [ 5.02738067e-02 3.09190031e+01 3.79000000e-01]\n",
68+
" [ 5.02738067e-02 3.08411215e+01 3.68500000e-01]\n",
69+
" [ 5.60097443e-02 3.07632399e+01 3.56500000e-01]\n",
70+
" [ 5.39852958e-02 3.07632399e+01 3.44500000e-01]\n",
71+
" [ 4.65623176e-02 3.06853583e+01 3.33500000e-01]\n",
72+
" [ 4.28508285e-02 3.05295950e+01 3.24000000e-01]\n",
73+
" [ 4.28508285e-02 3.03738318e+01 3.15500000e-01]\n",
74+
" [ 4.48752771e-02 3.02180685e+01 3.06500000e-01]\n",
75+
" [ 4.85867662e-02 2.99844237e+01 2.97000000e-01]\n",
76+
" [ 6.14082739e-02 2.98286604e+01 2.86500000e-01]\n",
77+
" [ 7.99657193e-02 2.95950156e+01 2.75000000e-01]\n",
78+
" [ 9.31246352e-02 2.95171340e+01 nan]\n",
79+
" [ 1.03921694e-01 2.94392523e+01 nan]\n",
80+
" [ 1.18767651e-01 2.95171340e+01 nan]\n",
81+
" [ 1.33613607e-01 2.99065421e+01 nan]]\n"
5182
]
5283
}
5384
],
@@ -65,12 +96,27 @@
6596
},
6697
{
6798
"cell_type": "code",
68-
"execution_count": null,
99+
"execution_count": 2,
69100
"metadata": {
70101
"collapsed": false,
71102
"scrolled": true
72103
},
73-
"outputs": [],
104+
"outputs": [
105+
{
106+
"name": "stdout",
107+
"output_type": "stream",
108+
"text": [
109+
"[[-0.17241379 0. ]\n",
110+
" [-0.17241379 0. ]\n",
111+
" [-0.20689655 0. ]\n",
112+
" ..., \n",
113+
" [-0.24137931 0.25 ]\n",
114+
" [-0.27586207 0.25 ]\n",
115+
" [-0.24137931 0.25 ]]\n",
116+
"{'comments': [], 'units': ['mV', 'mV'], 'signame': ['II', 'V'], 'fs': 125.0}\n"
117+
]
118+
}
119+
],
74120
"source": [
75121
"# Testing rdsamp format 80\n",
76122
"sig, fields=wfdb.srdsamp('sampledata/3000003_0003')\n",

0 commit comments

Comments
 (0)