{ "metadata": { "name": "", "signature": "sha256:a06f9ea2114e5d70ee39839c1ffad6f450c66ee6ec2fd9c9cfe980fd5a3c4ae8" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "heading", "level": 1, "metadata": {}, "source": [ "Toomre Code" ] }, { "cell_type": "code", "collapsed": false, "input": [ "%pylab inline\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "from scipy.integrate import odeint\n", "from IPython.html.widgets import interact, interactive, fixed\n", "\n" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Populating the interactive namespace from numpy and matplotlib\n" ] } ], "prompt_number": 2 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here we will put a description of the code later." ] }, { "cell_type": "code", "collapsed": false, "input": [ "%%file Toomre.py\n", "\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "from scipy.integrate import odeint\n", "from IPython.html.widgets import interact, interactive\n", "from scipy.optimize import fsolve\n", "\n", "pi = np.pi\n", "def ring(particles,radius,G,M):\n", " \n", " '''\n", " Set initial positions and velocities for all stars.\n", " '''\n", " \n", " particle = []\n", " velocity = []\n", " theta_n = 0\n", " arclen = (2*pi)/particles ## Arc length equally divided amongst the number of particles around circle\n", " v = np.sqrt((G*M)/radius) ## Velocity for central force to stay in a circular orbit\n", " while len(particle) < particles:\n", " angle = theta_n*arclen\n", " beta = angle + (pi/2.) ## Angle beta = angle of the position plus 90 degrees, for velocity vector\n", " theta_n += 1\n", " particle.append((radius*np.cos(angle), radius*np.sin(angle))) ## x = r*cos(theta) y = r*sin(theta)\n", " velocity.append((v*np.cos(beta), v*np.sin(beta))) ## vx = v*cos(beta) vy = v*sin(beta)\n", " return np.array(particle),np.array(velocity) ## Returns two arrays, particle position and velocity.\n", "\n", "def init_rings_123(G,M):\n", " '''\n", " Arrange stars into rings located at a distance that is a \n", " certain percentage of Rmin. Rmin is the minimum distance \n", " between the disruptor galaxy and the disrupted galaxy.\n", " This function is only used on direct, retrograde, and light\n", " mass disruptor cases.\n", " '''\n", " \n", " ring1,velocity1 = ring(12,.2,G,M) ## The positions of the stars are dependent on details found in the paper by Toomre et al.\n", " ring2,velocity2 = ring(18,.3,G,M)\n", " ring3,velocity3 = ring(24,.4,G,M)\n", " ring4,velocity4 = ring(30,.5,G,M)\n", " ring5,velocity5 = ring(36,.6,G,M)\n", " rings = np.array([ring1,ring2,ring3,ring4,ring5])\n", " velocity = np.array([velocity1,velocity2,velocity3,velocity4,velocity5])\n", " return rings,velocity ## Returns arrays of both the positions and velocity.\n", "\n", "def init_rings_4(G,M):\n", " \n", " '''\n", " Arrange stars into rings located at a distance that is a \n", " certain percentage of Rmin. Rmin is the minimum distance \n", " between the disruptor galaxy and the disrupted galaxy. This \n", " function is only used on the heavy mass disruptor case.\n", " '''\n", " \n", " ring1,velocity1 = ring(12,.12,G,M) ## The positions of the stars are dependent on details found in the paper by Toomre et al.\n", " ring2,velocity2 = ring(18,.18,G,M)\n", " ring3,velocity3 = ring(24,.24,G,M)\n", " ring4,velocity4 = ring(30,.30,G,M)\n", " ring5,velocity5 = ring(36,.36,G,M)\n", " rings = np.array([ring1,ring2,ring3,ring4,ring5])\n", " velocity = np.array([velocity1,velocity2,velocity3,velocity4,velocity5])\n", " return rings,velocity ## Returns arrays of both the positions and velocity.\n", "\n", "def unpack_rings_vel(rings,velocity):\n", " \n", " '''\n", " Make 4 arrays that hold the information for the x and y star positions, and the\n", " x and y star velocities. \n", " '''\n", " \n", " rx_points = [] ## x-coordinates of all stars\n", " ry_points = [] ## y-coordinates of all stars\n", " vrx = [] ## initial x velocity of all stars\n", " vry = [] ## initial y velocity of all stars\n", " for ring in rings:\n", " for point in ring:\n", " rx_points.append(point[0])\n", " ry_points.append(point[1])\n", " for ring in velocity:\n", " for point in ring:\n", " vrx.append(point[0])\n", " vry.append(point[1])\n", " return np.array(rx_points), np.array(ry_points), np.array(vrx), np.array(vry) ## Returns numpy arrays of values\n", "\n", "def derivgalaxy(y,t,M,S):\n", " \n", " '''\n", " Function extracts information from the 4 arrays in unpack_rings_vel\n", " function and plugs the values into the given differential equations\n", " that describe the motion of the stars and the motion of the disruptor\n", " galaxy. The output is a single array.\n", " '''\n", " \n", " G = 4.302e-3 #pc(M_solar)^-1 (km/s)^2\n", " vRx = y[0]\n", " vRy = y[2]\n", " Rx = y[1]\n", " Ry = y[3]\n", " vrx = y[4]\n", " vry = y[6]\n", " rx = y[5]\n", " ry = y[7]\n", " R = np.sqrt(Rx**2+Ry**2)\n", " delta_x = (Rx-rx)\n", " delta_y = (Ry-ry)\n", " \n", " dvrx_dt = -G * ((M/np.sqrt(rx**2. + ry**2.)**3.)*rx - (S/np.sqrt(delta_x**2.+delta_y**2.)**3.)*delta_x #Given differential equation describing the motion of the stars.\n", " + (S/np.sqrt(Rx**2.+Ry**2.)**3.)*Rx)\n", " dvry_dt = -G * ((M/np.sqrt(rx**2. + ry**2.)**3.)*ry - (S/np.sqrt(delta_x**2.+delta_y**2.)**3.)*delta_y \n", " + (S/np.sqrt(Rx**2.+Ry**2.)**3.)*Ry)\n", " \n", " dvRx_dt = -G * ((M+S)/(np.sqrt(Rx**2+Ry**2))**3)*Rx #Given differential equation describing the motion of the Disruptor Galaxy.\n", " dvRy_dt = -G * ((M+S)/(np.sqrt(Rx**2+Ry**2))**3)*Ry\n", " \n", " return np.array([dvRx_dt, vRx, dvRy_dt, vRy, dvrx_dt, vrx, dvry_dt, vry])\n", "\n", "def Make_Master_Array(Case = 1,Rx0 = -8, Ry0 = -9,Initial_velocity_X = 0.85,Initial_velocity_Y = 0.65,t = 11., M=330., S=330., dt = 0.01):\n", " \n", " '''\n", " The function takes the single array from derivgalaxy and plugs it into\n", " the odeint solver. The function then filters out the information associated\n", " with the positions of the disruptor galaxy and stars at all timesteps between\n", " 0 and 20 with 0.0075 intervals. The output is a 2 dimension matrix where the \n", " columns represent positions of the disruptor galaxy and all of the stars, and the\n", " rows represent a particular time.\n", " '''\n", " \n", " G = 4.302e-3 #pc(M_solar)^-1 (km/s)^2\\\n", " \n", " \n", " if Case ==1 or Case == 2 or Case == 3:\n", " rings,velocity = init_rings_123(G,M) ## Chooses which function to run according to the example chosen\n", " elif Case == 4:\n", " rings,velocity = init_rings_4(G,M)\n", " \n", " \n", " rx0,ry0,vrx_0,vry_0 = unpack_rings_vel(rings,velocity) ## Converts values determined above to 1-D arrays\n", " vRx_0 = Initial_velocity_X ## Initial velocity of disruptor galaxy in x direction\n", " vRy_0 = Initial_velocity_Y ## Initial velocity of disruptor galaxy in y direction\n", " \n", " ts = np.arange(0.,t+0.1,0.0075)\n", " \n", " MasterArray = []\n", " \n", " for n in range(len(rx0)): ## Runs for all 120 particles in initial condition vectors.\n", " \n", " output = odeint(derivgalaxy, np.array([vRx_0,Rx0,vRy_0,Ry0,vrx_0[n],rx0[n],vry_0[n],ry0[n]]),\n", " ts, args=(M, S)) ## Solve the differential equation for each time index \n", " ##and output the position values of the stars and disruptor galaxy.\n", " \n", " \n", " rx = output[:,5] \n", " ry = output[:,7]\n", " \n", " if n == 0:\n", " \n", " Rx = output[:,1] \n", " Ry = output[:,3] \n", " \n", " MasterArray.append(Rx)\n", " MasterArray.append(Ry)\n", " MasterArray.append(rx)\n", " MasterArray.append(ry)\n", " \n", " \n", " else:\n", " MasterArray.append(rx)\n", " MasterArray.append(ry)\n", " \n", " return MasterArray\n", "\n", "def Make_Plots(results,t, dt):\n", " \n", " '''\n", " Function extracts all positions of stars and the disruptor galaxy from a matrix and plots them.\n", " This is the Direct Passage situation.\n", " '''\n", " \n", " index = int(t/dt)\n", " plt.figure(figsize = (7, 7))\n", " plt.grid()\n", " plt.xlim(-10,7)\n", " plt.ylim(-16,15)\n", " plt.plot(results[0][:index], results[1][:index], 'b--', label = 'Disturbant Galaxy')\n", " for i in range(1,121):\n", " plt.plot(results[2*i][index], results[2*i + 1][index], 'ro', label = \"Stars\")\n", " plt.show()\n", " \n", "def Make_Plots_Green_Star(results, t, dt, GreenStar):\n", " index = int(t/dt)\n", " plt.figure(figsize = (7, 7))\n", " plt.grid()\n", " plt.xlim(-10,7)\n", " plt.ylim(-16,15)\n", " plt.plot(results[0][:index], results[1][:index], 'b--', label = 'Disturbant Galaxy')\n", " for i in range(1,121):\n", " plt.plot(results[2*i][index], results[2*i + 1][index], 'ro', label = \"Stars\")\n", " for i in range(GreenStar, GreenStar+1):\n", " plt.plot(results[2*i][index], results[2*i + 1][index], 'go', label = \"Highlighted Star\")\n", " plt.show()\n", " \n", " \n", "def Generate_Data(dataset = 'all', save = True):\n", " \n", " '''\n", " Calculate data for all of the stars and disruptor galaxy at all timesteps.\n", " '''\n", " \n", " if dataset == 'all':\n", "\n", " results_A = Make_Master_Array(Case = 1, Rx0 = -8, Ry0 = -9, Initial_velocity_X = 0.85,Initial_velocity_Y = 0.65,t = 20, M=330., S=330., dt = 0.0075)\n", " #Direct Passage \n", "\n", " results_B = Make_Master_Array(Case = 2, Rx0 = -8, Ry0 = 9,Initial_velocity_X = 0.85,Initial_velocity_Y = -0.65,t = 20, M=330., S=330., dt = 0.0075)\n", " #Retrograde Passage\n", "\n", " results_C = Make_Master_Array(Case = 3,Rx0 = -8, Ry0 = -9, Initial_velocity_X = 0.85,Initial_velocity_Y = 0.65,t = 20, M=330., S=82.5, dt = 0.0075)\n", " #Light Mass Disruptor\n", "\n", " results_D = Make_Master_Array(Case = 4, Rx0 = -8, Ry0 = -9, Initial_velocity_X = 0.85,Initial_velocity_Y = 0.65,t = 20, M=82.5, S=330., dt = 0.0075)\n", " #Heavy Mass Disruptor\n", "\n", " if save == True:\n", " \n", " np.save('Toomre_A.npy', results_A)\n", " np.save('Toomre_B.npy', results_B)\n", " np.save('Toomre_C.npy', results_C)\n", " np.save('Toomre_D.npy', results_D)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Overwriting Toomre.py\n" ] } ], "prompt_number": 5 }, { "cell_type": "code", "collapsed": false, "input": [ "import Toomre as Toomre\n", " " ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 3 }, { "cell_type": "code", "collapsed": false, "input": [ "Toomre.Generate_Data()" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 4 }, { "cell_type": "code", "collapsed": false, "input": [ "ls" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ " Volume in drive C has no label.\n", " Volume Serial Number is 0839-5207\n", "\n", " Directory of C:\\Users\\masha\\summer2014\\GalaxyProject\n", "\n", "08/05/2014 01:15 PM .\n", "08/05/2014 01:15 PM ..\n", "07/14/2014 11:10 AM 7 .gitignore\n", "06/26/2014 01:52 PM 108,063 1stAttempt.ipynb\n", "07/24/2014 04:18 PM 23,781 1WackyStarPlot.ipynb\n", "06/26/2014 02:06 PM 733,591 2ndAttempt.ipynb\n", "07/17/2014 01:57 PM 712,906 36StarPlots.ipynb\n", "06/26/2014 02:12 PM 450,200 3rdAttempt.ipynb\n", "07/24/2014 02:39 PM 8,520 AllAccelerations.ipynb\n", "07/30/2014 11:10 AM 9,153 DisruptorPassage.ipynb\n", "07/21/2014 01:36 PM 32,333 EatenStars.ipynb\n", "07/31/2014 01:42 PM 189 EllipticalOrbitInvestigation.ipynb\n", "07/30/2014 02:49 PM 597,575 EnergyPlots.ipynb\n", "07/28/2014 11:54 AM 131,204 HeavyMass0.01.ipynb\n", "07/25/2014 03:17 PM 5,975,390 HeavyMassInvestigation.ipynb\n", "07/24/2014 04:39 PM 32,875 InvestigateAccelerations.ipynb\n", "07/14/2014 11:11 AM 795 miscellaneous.ipynb\n", "08/03/2014 08:34 PM 62,179 RevisedRevisedSpeedUpCode.ipynb\n", "07/30/2014 12:00 PM 60,970 RevisedSpeedUpCode.ipynb\n", "07/22/2014 03:46 PM 5,874,376 RhoVsT.ipynb\n", "07/16/2014 11:32 AM 75,597 SpeedUpCode.ipynb\n", "08/05/2014 01:15 PM 8,840 Toomre.py\n", "08/05/2014 01:15 PM 7,267 Toomre.pyc\n", "08/05/2014 01:17 PM 5,190,496 Toomre_A.npy\n", "08/05/2014 01:17 PM 5,190,496 Toomre_B.npy\n", "08/05/2014 01:17 PM 5,190,496 Toomre_C.npy\n", "08/05/2014 01:17 PM 5,190,496 Toomre_D.npy\n", "08/05/2014 01:15 PM 70,911 ToomreCode.ipynb\n", "08/05/2014 01:13 PM 57,054 ToomreExamples.ipynb\n", "07/22/2014 03:21 PM 35,713 Turn1StarGreen.ipynb\n", "07/21/2014 12:29 PM 50,854 Unit_Investigation.ipynb\n", "08/02/2014 04:01 PM 189 Untitled0.ipynb\n", "07/24/2014 03:42 PM 5,156 WeeklyPlan07-14.ipynb\n", " 31 File(s) 35,887,672 bytes\n", " 2 Dir(s) 110,955,401,216 bytes free\n" ] } ], "prompt_number": 5 }, { "cell_type": "code", "collapsed": false, "input": [ "test_array = np.load('Toomre_A.npy')\n", "print test_array.shape" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "(242L, 2681L)\n" ] } ], "prompt_number": 6 }, { "cell_type": "code", "collapsed": false, "input": [ "def Make_Plots(results,t, dt):\n", " \n", " '''\n", " Function extracts all positions of stars and the disruptor galaxy from a matrix and plots them.\n", " This is the Direct Passage situation.\n", " '''\n", " \n", " index = int(t/dt)\n", " plt.plot(results[0][:index], results[1][:index], 'b--', label = 'Disturbant Galaxy')\n", " for i in range(1,121):\n", " plt.plot(results[2*i][index], results[2*i + 1][index], 'ro', label = \"Stars\")\n", " plt.show()\n", " \n", "#a = interact(Make_Plots,t = (0.,20.1), dt = (0.0075))\n", "\n" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 8 }, { "cell_type": "code", "collapsed": false, "input": [ "A = interact(Toomre.Make_Plots(results = np.load('Toomre_A.npy'), t = 20.1, dt = 0.0075), results = fixed(results), t = (0.,20.1), dt = fixed(0.0075))" ], "language": "python", "metadata": {}, "outputs": [ { "ename": "NameError", "evalue": "name 'interact' is not defined", "output_type": "pyerr", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)", "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mA\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0minteract\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mToomre\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mMake_Plots\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mresults\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mload\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'Toomre_A.npy'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mt\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;36m20.1\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdt\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;36m0.0075\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mresults\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mfixed\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mresults\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mt\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m(\u001b[0m\u001b[1;36m0.\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;36m20.1\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdt\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mfixed\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m0.0075\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[1;31mNameError\u001b[0m: name 'interact' is not defined" ] } ], "prompt_number": 2 }, { "cell_type": "code", "collapsed": false, "input": [ "def Make_Plots_B(t, dt):\n", " '''\n", " Function extracts all positions of stars and the disruptor galaxy from a matrix and plots them.\n", " This is the Retrograde Passage situation.\n", " '''\n", " index = int(t/dt)\n", " plt.xlim(-2, 2)\n", " plt.ylim(-2, 2)\n", " plt.plot(results_B[0][:index], results_B[1][:index], 'b--', label = 'Disturbant Galaxy')\n", " for i in range(1,121):\n", " plt.plot(results_B[2*i][index], results_B[2*i + 1][index], 'ro', label = \"Stars\")\n", " \n", " plt.show()\n", " \n", "b = interact(Make_Plots_B,t = (0.,20.1), dt = (0.0075))\n", "\n" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\nsyABBft/tQAAAABJRU5ErkJggg==\n", "text": [ "" ] } ], "prompt_number": 7 }, { "cell_type": "code", "collapsed": false, "input": [ "def Make_Plots_C(t, dt):\n", " \n", " '''\n", " Function extracts all positions of stars and the disruptor galaxy from a matrix and plots them.\n", " This is the Light Mass Disruptor situation.\n", " '''\n", " \n", " index = int(t/dt)\n", " plt.plot(results_C[0][:index], results_C[1][:index], 'b--', label = 'Disturbant Galaxy')\n", " for i in range(1,121):\n", " plt.plot(results_C[2*i][index], results_C[2*i + 1][index], 'ro', label = \"Stars\")\n", " plt.show()\n", " \n", "c = interact(Make_Plots_C,t = (0.,20.1), dt = (0.0075))\n", "\n", "\n", "\n" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 8 }, { "cell_type": "code", "collapsed": false, "input": [ "def Make_Plots_D(t, dt):\n", " \n", " '''\n", " Function extracts all positions of stars and the disruptor galaxy from a matrix and plots them.\n", " This is the Heavy Mass Disruptor situation.\n", " '''\n", " \n", " index = int(t/dt)\n", " plt.plot(results_D[0][:index], results_D[1][:index], 'b--', label = 'Disturbant Galaxy')\n", " for i in range(1,121):\n", " plt.plot(results_D[2*i][index], results_D[2*i + 1][index], 'ro', label = \"Stars\")\n", " plt.show()\n", " \n", "d = interact(Make_Plots_D,t = (0.,20.1), dt = (0.0075))" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\n+vTpY7oUv/Lyyy8zYsQI02W0qqKiIrp37173WCc82rZv305eXh6DBg066e9bZLnj6ZzqJKfU1FTS\n09NJT0/nlltuYdGiRaSkpLBixQqnSzLmdN9FZWUlJSUl5OTksHbtWkaPHk1BQYGBKlvH6b6LtLS0\nepvHWS6f3z+TEwFTU1MJDw9n7NixrV2eUVpR11BZWRmjRo1izpw5tG/f/uRPasUhogbOOeecuvvV\n1dVWhw4dDFZj1vDhwy2fz1f3ODo62vrxxx8NVmTGV199ZXXp0sWKioqyoqKirNDQUKtHjx7Wnj17\nTJdmzCuvvGJdc801Vnl5uelSWt2aNWusYcOG1T1++umnrWeeecZgRWZVVFRYQ4cOtZ5//vnTPs/o\nUExMTAyrVq0CIDs7+6SbigWLkSNHkp2dDcCmTZuoqKjg/PPPN1xV60tMTGTPnj1s27aNbdu2ERkZ\nyYYNG+jSpYvp0ozIysri2WefJTMzk4iICNPltLorr7ySzZs3s337dioqKli4cCE333yz6bKMsCyL\ncePGER8fz8MPP3za5xpdx75u3ToeeOABjhw5Qtu2bcnIyKBfv36myjHq6NGjpKSk8PnnnxMeHs6s\nWbPwer2myzLukksuYd26dXTq1Ml0KUbExsZSUVFR9/mvvvpqMjIyDFfVuj788EMefvhhqqqqGDdu\nHFOmTDFdkhEff/wxgwcPpk+fPnVDVGlpaQwfPrzBc3WCkoiIy+jSeCIiLqNgFxFxGQW7iIjLKNhF\nRFxGwS4i4jIKdhERl1Gwi4i4jIJdRMRl/j/tROOiJHYj/wAAAABJRU5ErkJggg==\n", "text": [ "" ] } ], "prompt_number": 9 }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [] } ], "metadata": {} } ] }