Skip to content

Instantly share code, notes, and snippets.

@jrleeman
Created July 26, 2016 00:56
Show Gist options
  • Select an option

  • Save jrleeman/65e3b94eb67d1d73f2617327ca1e233c to your computer and use it in GitHub Desktop.

Select an option

Save jrleeman/65e3b94eb67d1d73f2617327ca1e233c to your computer and use it in GitHub Desktop.
Testing which way to calculate line intersections is the fastest
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"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": "markdown",
"metadata": {},
"source": [
"# LFC Development\n",
"Develop calculation methods for the LFC and other problems that require the estimation of the intersection of two lines sampled at arbitrary spacing."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Fake Data\n",
"Make some fake data"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"x1 = np.linspace(5,30,17)\n",
"y1 = 3*x1**2\n",
"y2 = 100*x1 - 650"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x109cddf10>]"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x1040ac8d0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.plot(x1,y1,'-o')\n",
"plt.plot(x1,y2,'-o')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Algorithm"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def _nearest_intersection_idx(x, a, b):\n",
" \"\"\"\n",
" Determines the index of the point just before two lines with\n",
" common x values.\n",
" \n",
" Parameters\n",
" ----------\n",
" x : array-like\n",
" 1-dimensional array of numeric x-values\n",
" a : array-like\n",
" 1-dimensional array of y-values for line 1\n",
" b : array-like\n",
" 1-dimensional array of y-values for line 2\n",
" \n",
" Returns\n",
" -------\n",
" An array of indexes representing the index of the values\n",
" just before the intersection(s) of the two lines. \n",
" \"\"\"\n",
" # Difference in the two y-value sets\n",
" difference = a-b\n",
" \n",
" # Determine the point just before the intersection of the lines\n",
" # Will return multiple points for multiple intersections\n",
" sign_change_idx = np.where(np.diff(np.sign(difference)))[0]\n",
" \n",
" return sign_change_idx"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"def find_intersections(x, a, b):\n",
" \n",
" \"\"\"\n",
" Calculates the best estimate of the intersection(s) of two y-value\n",
" data sets that share a common x-value set. Returns list of tuples\n",
" that are the intersections.\n",
" \"\"\"\n",
" \n",
" # Find the index of the points just before the intersection(s)\n",
" nearest_idx = _nearest_intersection_idx(x, a, b)\n",
" \n",
" # Build a list of dictionaries of intersections\n",
" intersections = []\n",
" for idx in nearest_idx:\n",
" intersection = {'x1': x[idx],\n",
" 'x2': x[idx + 1],\n",
" 'ya1': a[idx],\n",
" 'ya2': a[idx+1],\n",
" 'yb1': b[idx],\n",
" 'yb2': b[idx+1]}\n",
" \n",
" # Compute the slope of each line\n",
" intersection['m1'] = (intersection['ya2'] - intersection['ya1'])\\\n",
" /(intersection['x2']-intersection['x1'])\n",
" \n",
" intersection['m2'] = (intersection['yb2'] - intersection['yb1'])\\\n",
" /(intersection['x2']-intersection['x1'])\n",
" \n",
" # Compute the intercept of each line\n",
" intersection['b1'] = intersection['ya1'] -\\\n",
" intersection['m1'] * intersection['x1']\n",
" \n",
" intersection['b2'] = intersection['yb1'] -\\\n",
" intersection['m2'] * intersection['x1']\n",
" \n",
" # Compute the intersection\n",
" intersection['xi'] = (intersection['b2'] - intersection['b1'])\\\n",
" / (intersection['m1'] - intersection['m2'])\n",
" \n",
" intersection['yi'] = intersection['m1'] * intersection['xi']\\\n",
" + intersection['b1']\n",
" \n",
" # Add a tuple of the x and y values of the intersection to the list\n",
" # that will be returned\n",
" intersections.append((intersection['xi'], intersection['yi']))\n",
" \n",
" return intersections"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The slowest run took 4.77 times longer than the fastest. This could mean that an intermediate result is being cached.\n",
"10000 loops, best of 3: 28.5 µs per loop\n"
]
}
],
"source": [
"%%timeit\n",
"intersections = find_intersections(x1,y1,y2)"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x109dad910>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"intersections = find_intersections(x1,y1,y2)\n",
"plt.plot(x1,y1,'-o')\n",
"plt.plot(x1,y2,'-o')\n",
"\n",
"for intersection in intersections:\n",
" plt.axhline(y=intersection[1])\n",
" plt.axvline(x=intersection[0])"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"[(8.8884228187919465, 238.84228187919462),\n",
" (24.445364238410598, 1794.5364238410598)]"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"intersections"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def find_intersections(x, a, b):\n",
" \n",
" \"\"\"\n",
" Calculates the best estimate of the intersection(s) of two y-value\n",
" data sets that share a common x-value set.\n",
" \"\"\"\n",
" \n",
" # Find the index of the points just before the intersection(s)\n",
" nearest_idx = _nearest_intersection_idx(x, a, b)\n",
" \n",
" # Make an empty array to hold what we'll need for calculating \n",
" # approximate intersections. Each row is an intersection\n",
" # x1, x2, ya1, ya2, yb1, yb2, m1, m2, b1, b2, xi, yi\n",
" intersections = np.zeros((np.size(nearest_idx), 12))\n",
" \n",
" # Place x values for each intersection\n",
" intersections[:,0] = x[nearest_idx]\n",
" intersections[:,1] = x[nearest_idx + 1]\n",
" \n",
" # Place y values for the first line\n",
" intersections[:,2] = a[nearest_idx]\n",
" intersections[:,3] = a[nearest_idx + 1]\n",
" \n",
" # Place y values for the second line\n",
" intersections[:,4] = b[nearest_idx]\n",
" intersections[:,5] = b[nearest_idx + 1]\n",
" \n",
" # Calculate the slope of each line (delta y / delta x)\n",
" intersections[:,6] = (intersections[:,3] - intersections[:,2])\\\n",
" /(intersections[:,1] - intersections[:,0])\n",
" \n",
" intersections[:,7] = (intersections[:,5] - intersections[:,4])\\\n",
" /(intersections[:,1] - intersections[:,0])\n",
" \n",
" # Calculate the intercept of each line\n",
" intersections[:,8] = intersections[:,2] - intersections[:,6] * intersections[:,0]\n",
" \n",
" intersections[:,9] = intersections[:,4] - intersections[:,7] * intersections[:,0]\n",
"\n",
" # Calculate the x-intersection of the lines\n",
" # (b2-b1)/(m1-m2)\n",
" intersections[:,10] = (intersections[:,9] - intersections[:,8])\\\n",
" /(intersections[:,6] - intersections[:,7])\n",
" \n",
" # Calculate the y-intersection of the lines\n",
" intersections[:,11] = intersections[:,6] * intersections[:,10] + intersections[:,8]\n",
" \n",
" return intersections [:,10:12]"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The slowest run took 5.55 times longer than the fastest. This could mean that an intermediate result is being cached.\n",
"10000 loops, best of 3: 63.1 µs per loop\n"
]
}
],
"source": [
"%%timeit\n",
"intersections = find_intersections(x1,y1,y2)"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x109dde190>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"intersections = find_intersections(x1,y1,y2)\n",
"plt.plot(x1,y1,'-o')\n",
"plt.plot(x1,y2,'-o')\n",
"\n",
"for intersection in intersections:\n",
" plt.axhline(y=intersection[1])\n",
" plt.axvline(x=intersection[0])"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([[ 8.88842282, 238.84228188],\n",
" [ 24.44536424, 1794.53642384]])"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"intersections"
]
}
],
"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.11"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment