{
 "metadata": {
  "name": "",
  "signature": "sha256:9453f2d297004717b7b0ab5bb80d8d05d3ff319f7e609fa9565e753aa36cef87"
 },
 "nbformat": 3,
 "nbformat_minor": 0,
 "worksheets": [
  {
   "cells": [
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "import h5py\n",
      "import numpy as np\n",
      "import matplotlib.pyplot as plt"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 1
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "file    = h5py.File('test_rps.hdf5', 'r')   # 'r' means that hdf5 file is open in read-only mode\n",
      "dataset = file['RPS01']"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 2
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "print dataset.value[4,2]"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "36.7822\n"
       ]
      }
     ],
     "prompt_number": 3
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "plt.plot( dataset.value[:,0], dataset.value[:,2], color = 'r')\n",
      "#plt.xlim([1.45415117E9,1.4541513E9])\n",
      "plt.show()"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 4
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "prev_val= dataset.value[0,2]\n",
      "n = 0\n",
      "angle = np.zeros((dataset.shape[0]))\n",
      "for i in range(dataset.value.shape[0]):\n",
      "    if (dataset.value[i,2] - prev_val) > 300:\n",
      "        n -= 1\n",
      "        angle[i] = dataset.value[i,2] + n*360\n",
      "        prev_val = dataset.value[i,2]\n",
      "    elif -(dataset.value[i,2] - prev_val) > 300:  # compute angular speed in backward direction.\n",
      "        n += 1\n",
      "        angle[i] = dataset.value[i,2] - n*360\n",
      "        prev_val = dataset.value[i,2]\n",
      "    else:\n",
      "        angle[i] = dataset.value[i,2] + n*360\n",
      "        prev_val = dataset.value[i,2]\n",
      "        "
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 6
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "Five point difference numerical calculation. Source: http://mathfun528.blogspot.cz/2011/07/numerical-differentiation.html"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "angle_speed = np.zeros_like(angle)\n",
      "\n",
      "for i in range(2,angle.shape[0]-2):\n",
      "     angle_speed[i] = (-angle[i + 2] + 8*angle[i + 1] - 8*angle[i - 1] + angle[i - 2])/12"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 7
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "fig, ax1 = plt.subplots()\n",
      "\n",
      "ax2 = ax1.twinx()\n",
      "ax1.set_xlabel('Sample #')\n",
      "ax1.set_ylabel('Angle')\n",
      "ax2.set_ylabel('Angular speed')\n",
      "\n",
      "ax1.plot(dataset.value[:,0], angle,'b',dataset.value[:,0], dataset.value[:,2],'r')\n",
      "ax2.plot(dataset.value[:,0], angle_speed,'g')\n",
      "\n",
      "plt.show()"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 8
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "print angle"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "[  3.64746094e+01   3.65405273e+01   3.77929688e+01 ...,  -1.31529551e+05\n",
        "  -1.31530452e+05  -1.31528452e+05]\n"
       ]
      }
     ],
     "prompt_number": 10
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 4
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 45
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 45
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [],
     "language": "python",
     "metadata": {},
     "outputs": []
    }
   ],
   "metadata": {}
  }
 ]
}