{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import re"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 101,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "def hex_color_to_rgba(hex_color, normalize_to=255):\n",
    "    color_pattern_one_digit = r'#(?P<R>[\\da-fA-F])(?P<G>[\\da-fA-F])(?P<B>[\\da-fA-F])(?P<A>[\\da-fA-F])?'\n",
    "    color_pattern_two_digit = r'#(?P<R>[\\da-fA-F]{2})(?P<G>[\\da-fA-F]{2})(?P<B>[\\da-fA-F]{2})(?P<A>[\\da-fA-F]{2})?'\n",
    "\n",
    "    match = re.match(color_pattern_two_digit, hex_color)\n",
    "\n",
    "    if match:\n",
    "        channels = match.groupdict()\n",
    "        channel_scale = 255\n",
    "        if channels['A'] is None:\n",
    "            channels['A'] = 'ff'\n",
    "    else:\n",
    "        match = re.match(color_pattern_one_digit, hex_color)\n",
    "        if match:\n",
    "            channels = match.groupdict()\n",
    "            if channels['A'] is None:\n",
    "                channels['A'] = 'f'\n",
    "            channel_scale = 15\n",
    "        else:\n",
    "            raise ValueError('Color string must be in format #RGB[A] or #RRGGBB[AA] '\n",
    "                             '(i.e., alpha channel is optional)')\n",
    "\n",
    "    scale = normalize_to / channel_scale\n",
    "    return tuple(type(normalize_to)(int(channels[k], 16) * scale)\n",
    "                 4or k in 'RGBA')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 105,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(1.0, 0.0, 0.8666666666666667, 0.2)"
      ]
     },
     "execution_count": 105,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "rgba = hex_color_to_rgba('#f0d3', normalize_to=1.)\n",
    "rgba"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "from path_helpers import path\n",
    "from svg_model import svg_polygons_to_df\n",
    "from svg_model.connections import extract_connections\n",
    "from svg_model.shapes_canvas import ShapesCanvas\n",
    "from svg_model.tesselate import tesselate_shapes_frame\n",
    "from svg_model.point_query import get_shapes_pymunk_space\n",
    "from svg_model.plot import plot_shapes\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Load device SVG"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The line_profiler extension is already loaded. To reload it, use:\n",
      "  %reload_ext line_profiler\n"
     ]
    }
   ],
   "source": [
    "%load_ext line_profiler"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "drawing_shape = pd.Series([1920, 1080], index=['width', 'height'])\n",
    "device_svg = 'static/device.svg'\n",
    "df_shapes = svg_polygons_to_df(device_svg, xpath='//svg:polygon')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "c:\\users\\christian\\documents\\github\\svg_model\\svg_model\\connections.py:168: FutureWarning: sort(....) is deprecated, use sort_index(.....)\n",
      "  df_shape_connections_i.sort(axis=1, inplace=True)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>source</th>\n",
       "      <th>target</th>\n",
       "      <th>line_id</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "Empty DataFrame\n",
       "Columns: [source, target, line_id]\n",
       "Index: []"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#device_canvas = ShapesCanvas.from_svg(device_svg, padding_fraction=0.1, canvas_shape=drawing_shape)\n",
    "#device_canvas = ShapesCanvas.from_svg(device_svg, padding_fraction=0, xpath='//svg:polygon')\n",
    "#%lprun -f ShapesCanvas.__init__ -f get_shapes_pymunk_space -f tesselate_shapes_frame device_canvas = ShapesCanvas(df_shapes, \"path_id\")\n",
    "device_canvas = ShapesCanvas(df_shapes, \"path_id\")\n",
    "extract_connections(device_svg, device_canvas)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "--------------------------------------------------"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Scale and center SVG points to drawing shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0xbf4d550>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0xbff3ad0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "svg_shape = device_canvas.source_shape\n",
    "\n",
    "svg_axis = device_canvas.df_shapes[['x', 'y']].plot(kind='scatter', x='x', y='y',\n",
    "                                                    xlim=(0, svg_shape.width),\n",
    "                                                    ylim=(0, svg_shape.height))                                          \n",
    "drawing_axis = (device_canvas.df_canvas_shapes[['x', 'y']]\n",
    "                .plot(kind='scatter', x='x', y='y',\n",
    "                      xlim=(0, device_canvas.canvas_shape.width),\n",
    "                      ylim=(0, device_canvas.canvas_shape.height)))\n",
    "svg_axis.set_aspect(True)\n",
    "drawing_axis.set_aspect(True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "--------------------------------------------------"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Tesselate *scaled* shapes into convex shapes and construct pymunk `Space`"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Draw tesselations in drawing layout"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\nPzuSAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0xbf0cfd0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "axis = plot_shapes(device_canvas.df_canvas_tesselations, ['path_id', 'triangle_i'],\n",
    "                   fc='none')\n",
    "plot_shapes(device_canvas.df_canvas_shapes, ['path_id'], alpha=.3, axis=axis)\n",
    "axis.set_aspect(True)\n",
    "axis.set_xlim(0, device_canvas.canvas_shape.width)\n",
    "axis.set_ylim(0, device_canvas.canvas_shape.height)\n",
    "pass"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from svg_model.connections import extract_adjacent_shapes, extract_connections, draw_lines_svg_layer, get_adjacency_matrix\n",
    "from svg_model import compute_shape_centers\n",
    "\n",
    "device_svg = r'C:\\Users\\Christian\\Documents\\Github\\test2.svg'\n",
    "device_canvas = ShapesCanvas.from_svg(device_svg)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The slowest run took 7.45 times longer than the fastest. This could mean that an intermediate result is being cached \n",
      "10 loops, best of 3: 17.5 ms per loop\n"
     ]
    }
   ],
   "source": [
    "%timeit df_electrode_connections = extract_connections(device_svg, device_canvas)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from lxml import etree"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "%lprun -f extract_connections extract_connections(\"test.svg\", device_canvas)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Demonstrate electrode lookup based on drawing coordinates"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "# output_filepath = 'device_connections.svg'\n",
    "input_svg = r'C:\\Users\\Christian\\Documents\\Microdrop\\devices\\Paper Assay v11\\device.svg'\n",
    "\n",
    "output_xml = auto_detect_adjacent_shapes(input_svg)\n",
    "\n",
    "with open('test.svg', 'wb') as output:\n",
    "    output.write(etree.tostring(output_xml))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "import lxml"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "lxml.etree.ElementTree"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 2",
   "language": "python",
   "name": "python2"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.9"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}
