{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Analysis of Markov transition probabilities for lattice atomic defects"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Authors: Artem Maksov, Maxim Ziatdinov*"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "*_Correspondence to: ziatdinovmax@gmail.com_\n",
    "\n",
    "_Date: 02/28/2018_    "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In this notebook, we demonstrate how to use an information on occurence of several defect states along the multiple isolated trajectories can be used to construct Markov (transition) matrix."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "flow = np.load('flow.npy')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We can interpret traces as lists containing class label at every timestep that label is defined on"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "fl_cl = dict()\n",
    "\n",
    "for i in flow.item():\n",
    "    fl_cl[i] = list()\n",
    "    for it in flow.item()[i]:\n",
    "        clustnums = [1, 2, 3, 4]\n",
    "        for cl in clustnums:\n",
    "            if len(flow.item()[i][it][cl]) > 0:\n",
    "                fl_cl[i].append(cl)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We relabel the classes to prepare for inferring transition probabilities:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "for trace in fl_cl:\n",
    "    fl_cl[trace] = [a-1 for a in fl_cl[trace]]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We define a function to get probabilities from observations"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def transition_matrix(trace):\n",
    "    n = 1+ max(trace) #number of states\n",
    "\n",
    "    #M = [[0]*n for _ in range(n)]\n",
    "    M = np.zeros(shape=(n, n))\n",
    "    \n",
    "    for (i,j) in zip(trace,trace[1:]):\n",
    "        M[i][j] += 1\n",
    "\n",
    "    #now convert to probabilities:\n",
    "    for row in M:\n",
    "        s = sum(row)\n",
    "        if s > 0:\n",
    "            row[:] = [f/s for f in row]\n",
    "    return M"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We calculate probabilities for all recorded traces and calculate mean"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "m = np.zeros(shape = (len(fl_cl), 4, 4))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "for i in fl_cl:\n",
    "    m[i] = transition_matrix(fl_cl[i])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "mtot = np.mean(m, axis=0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[ 0.10813397  0.31901914  0.265311    0.30753589]\n",
      " [ 0.12245688  0.18133569  0.35623065  0.33997678]\n",
      " [ 0.18299351  0.23385332  0.26509152  0.31806165]\n",
      " [ 0.16767163  0.20472051  0.28236597  0.3452419 ]]\n"
     ]
    }
   ],
   "source": [
    "print(mtot)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x22b65566b70>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig450 = plt.figure(450, figsize=(5, 5))\n",
    "ax = fig450.add_subplot(111)\n",
    "imsh = ax.imshow(mtot, cmap='jet', vmin = 0., vmax = 0.5)\n",
    "ax.set_xticks([0, 1, 2, 3])\n",
    "ax.set_yticks([0, 1, 2, 3])\n",
    "ax.set_xlabel('Transtion class')\n",
    "ax.set_ylabel('Starting class')\n",
    "\n",
    "for (j,i),label in np.ndenumerate(mtot):\n",
    "    ax.text(i,j, \"%.2f\" % label,ha='center',va='center')\n",
    "    \n",
    "#fig450.savefig(directory + 'trans_prob' + '.png')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "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.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
