{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "\"Continuum\n", "\n", "Introduction to Bokeh\n", "=====================\n", "\n", "In this tutorial we'll learn how to use Bokeh to build interactive visualizations viewable in a browser. Generally this tutorial will have the following format\n", "\n", "1. `charting` - High level interface to go from data to plot\n", "2. `plotting` - Intermediate interface allowing control to all parts of a plot\n", " - Vectorized attributes\n", " - Toolbars\n", " - Linked Brushing\n", " - Interactivity\n", "3. Baseball example - Example of viewing statistics of baseball\n", "\n", "\n", "Install\n", "-------\n", "\n", "This tutorial uses many different libraries that are all available with the [Anaconda Distribution](http://continuum.io/downloads). Once you have Anaconda install, please run these commands from a terminal:\n", "\n", "```\n", "$ conda install -y blaze\n", "$ conda install -y bokeh\n", "$ conda install -y odo\n", "```\n", "\n", "\n", "
\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Introduction to [Bokeh](http://bokeh.pydata.org/)\n", "\n", "Provide a first-class visualization library for web-aware applications, without\n", "requiring web-level programming.\n", "\n", "##We wrote JavaScript, so you don't have to.\n", "\n", "Write a visualization python. Bokeh creates data descripors and a scenegraph consumed by BokehJS.\n", "This works in ipython notebook, creating static files and interacting with dynamic data sources.\n", "\n", "Bokeh includes pre-built schemas in bokeh.charts, a low-level composition interface (similar to matplotlib),\n", "a server for large and/or dynamic datasources and widgets for providing client-side realtime interaction.\n", "\n", "The non-JS framework also has prototypes in other languages (Scala, Julia...maybe R).\n", "\n", "**Note:** There are examples notebooks in bokeh/examples/plotting/notebooks. Start an ipython notebook server there to get more examples.\n", "\n", "[Gallery](http://bokeh.pydata.org/docs/gallery.html) --\n", "[tutorial](http://bokeh.pydata.org/tutorial/index.html) -- \n", "[Documentation](http://bokeh.pydata.org/docs/user_guide.html) --\n", "[Repo](https://github.com/bokeh/bokeh)\n" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [], "source": [ "import pandas as pd\n", "import numpy as np" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Output\n", "\n", "Bokeh can output to html, a notebook, or just fragments for embedding in a web application. \n", "\n", "To start playing, we'll use the notebook. Later we will see the other types of output." ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ " \n", " \n", " \n", " \n", "
\n", " \n", " BokehJS successfully loaded.\n", "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from bokeh.plotting import output_notebook \n", "output_notebook() # Tell Bokeh to output in an ipython notebook (other options later)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "\n", "## Plotting.py\n", "\n", "This is a mid-level interface, used by the charting library (and other parts of bokeh). It can also be used directly.\n", "The basic idea: there is an active plot, and you are modifying it.\n" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [], "source": [ "import numpy as np\n", "from bokeh.plotting import *\n", "N = 102\n", "lin_arr = np.linspace(0, 4*np.pi, N)\n", "sin_arr = np.sin(lin_arr)\n", "cos_arr = np.cos(lin_arr)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "\n", "## Scatter Plots\n", "\n", "To begin with let's make a scatter plot." ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "
\n", "\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "\n", "p1 = figure()\n", "p1.scatter(lin_arr, sin_arr, color=\"#FF00FF\")\n", "p1.scatter(lin_arr, cos_arr, color=\"green\")\n", "show(p1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "\n", "## Exercise\n", "\n", "Play with plotting arrays, try editting\n", "- color,\n", "- markers,\n", "- alpha (value between 0-1), and \n", "- size (int of pixels)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "
\n", "\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "p2 = figure()\n", "p2.scatter(x=lin_arr, y=sin_arr, color=\"red\")\n", "show(p2)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "
\n", "\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "p3 = figure()\n", "p3.scatter(x=lin_arr, y=cos_arr , marker=\"square\", color=\"green\")\n", "show(p3)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Other plotting things...\n", "There are lots of [glyph types](http://bokeh.pydata.org/docs/reference/plotting.html) and lots of [properties](http://bokeh.pydata.org/docs/user_guide/objects.html#userguide-objects-line-properties)...here is just a sample" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "## Everything is vectorized\n", "\n", "While we have only been passing vectors for locations, we can do so for almost any parameter.\n", "\n", "Let's use the `cos_arr` to size the circles" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "
\n", "\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "p4 = figure()\n", "p4.scatter(x=lin_arr, y=sin_arr, size=cos_arr**2*10)\n", "show(p4)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "\n", "Let's play with colors now. Brewer is a popular set of palletes. Here we pick one and then build a vector of colors for the plot." ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Brewer Palettes: ['Spectral', 'RdYlGn', 'OrRd', 'PuBu', 'BuPu', 'RdBu', 'Oranges', 'BuGn', 'PiYG', 'YlOrBr', 'YlGn', 'RdPu', 'Greens', 'PRGn', 'YlGnBu', 'RdYlBu', 'BrBG', 'Purples', 'Reds', 'GnBu', 'Greys', 'RdGy', 'YlOrRd', 'PuOr', 'PuRd', 'Blues', 'PuBuGn']\n", "Brewer Grey Palettes: [3, 4, 5, 6, 7, 8, 9]\n" ] } ], "source": [ "from bokeh.palettes import brewer\n", "print \"Brewer Palettes:\", brewer.keys()\n", "print \"Brewer Grey Palettes:\", brewer[\"Greys\"].keys()\n", "palette = brewer[\"Greys\"][9] + list(reversed(brewer[\"Greys\"][9]))\n", "colors = palette * (len(lin_arr) / len(palette)) + palette[0:len(lin_arr) % len(palette)]" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "
\n", "\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "p5 = figure()\n", "p5.scatter(x=lin_arr, y=sin_arr, size=cos_arr**2*10 + 5, fill_color=colors)\n", "show(p5)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "\n", "## Tools\n", "\n", "If you notice the bar at the top of the you see several places to interact with the plot.\n", "\n", "These are tools and there a many different tools built into the Bokeh.\n", "\n", "Let's take a look at HoverTools, but first we use Bokeh's data source which watches changes." ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false }, "outputs": [], "source": [ "source = ColumnDataSource(\n", " data=dict(\n", " x=lin_arr,\n", " y=sin_arr,\n", " size=cos_arr**2*10 + 5,\n", " colors=colors\n", " )\n", ")" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "
\n", "\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from bokeh.models import HoverTool\n", "from collections import OrderedDict\n", "\n", "TOOLS=\"crosshair,pan,wheel_zoom,box_zoom,reset,hover,previewsave\"\n", "p6 = figure(title=\"Hoverful Scatter\", tools=TOOLS)\n", "p6.circle(x=\"x\", y=\"y\", size=\"size\", source=source,\n", " fill_color=\"colors\", fill_alpha=0.6, line_color=None)\n", "\n", "hover = p6.select(dict(type=HoverTool))\n", "hover.tooltips = OrderedDict([\n", " (\"index\", \"$index\"),\n", " (\"(x,y)\", \"(@x, @y)\"),\n", " (\"size\", \"@size\"),\n", " (\"fill color\", \"$color[hex, swatch]:fill_color\"),\n", "])\n", "show(p6)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "\n", "## Linking two plots\n", "\n", "One of the best aspects of Bokeh is linking plots. We can link the brushing. This will allow you to select and pan with the plots both reacting to each other." ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "
\n", "\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "\n", "N = 300\n", "x = np.linspace(0, 4*np.pi, N)\n", "y1 = np.sin(x)\n", "y2 = np.cos(x)\n", "\n", "source = ColumnDataSource()\n", "source.add(data=x, name='x')\n", "source.add(data=y1, name='y1')\n", "source.add(data=y2, name='y2')\n", "\n", "TOOLS = \"pan,wheel_zoom,box_zoom,reset,save,box_select,lasso_select\"\n", "\n", "s1 = figure(tools=TOOLS, plot_width=350, plot_height=350)\n", "s1.scatter('x', 'y1', source=source)\n", "\n", "# Linked brushing in Bokeh is expressed by sharing data sources between\n", "# renderers. Note below that s2.scatter is called with the `source`\n", "# keyword argument, and supplied with the same data source from s1.scatter\n", "s2 = figure(tools=TOOLS, plot_width=350, plot_height=350, x_range=s1.x_range)\n", "s2.scatter('x', 'y2', source=source, )\n", "\n", "p = gridplot([[s1,s2]])\n", "show(p)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "\n", "## Basic interactivity\n", "\n", "Bokeh lets you use a Python update function to update your plots.\n", "\n", "In IPython notebook we can use the interactive widgets provided by the notebook. One can also use Flask or Bokeh-server to embed in outside the notebook." ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x = np.linspace(0, 2*np.pi, 2000)\n", "y = np.sin(x)\n", "\n", "source = ColumnDataSource(data=dict(x=x, y=y))\n", "\n", "p = figure(title=\"simple line example\", plot_height=300, plot_width=600)\n", "p.line(x, y, color=\"#2222aa\", line_width=3, source=source, name=\"foo\")" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false }, "outputs": [ { "data": { "application/javascript": [ "\n", " var ds = Bokeh.Collections('ColumnDataSource').get('48862641-4c9a-498e-950f-0d5f40a4679d');\n", " var data = {\"column_names\": [\"y\", \"x\", \"x\", \"y\"], \"tags\": [], \"selected\": [], \"data\": {\"y\": [0.0, 0.003143159060238096, 0.006286287067720245, 0.009429352969997286, 0.01257232571523362, 0.015715174252513998, 0.018857867532150272, 0.022000374505988164, 0.025142664127713998, 0.028284705353161424, 0.0314264671406181, 0.03456791845113242, 0.03770902824882009, 0.040849765501170796, 0.04399009917935478, 0.04712999825852939, 0.05026943171814557, 0.05340836854225433, 0.056546777719813215, 0.059684628244992606, 0.06282188911748207, 0.0659585293427967, 0.06909451793258313, 0.07222982390492594, 0.07536441628465354, 0.07849826410364426, 0.08163133640113233, 0.08476360222401372, 0.08789503062715187, 0.09102559067368361, 0.09415525143532459, 0.09728398199267493, 0.10041175143552472, 0.1035385288631593, 0.10666428338466463, 0.10978898411923245, 0.11291260019646535, 0.11603510075668172, 0.11915645495122076, 0.12227663194274711, 0.12539560090555552, 0.1285133310258755, 0.1316297915021756, 0.13474495154546787, 0.13785878037961183, 0.1409712472416188, 0.14408232138195554, 0.14719197206484821, 0.150300168568586, 0.15340688018582457, 0.15651207622388952, 0.15961572600507962, 0.16271779886696974, 0.16581826416271395, 0.1689170912613482, 0.17201424954809297, 0.17510970842465573, 0.17820343730953322, 0.1812954056383136, 0.18438558286397838, 0.18747393845720423, 0.1905604419066646, 0.1936450627193311, 0.19672777042077488, 0.19980853455546754, 0.20288732468708218, 0.20596411039879395, 0.20903886129358054, 0.21211154699452278, 0.2151821371451043, 0.21825060140951183, 0.2213169094729346, 0.22438103104186405, 0.22744293584439298, 0.23050259363051478, 0.23355997417242208, 0.2366150472648055, 0.23966778272515207, 0.2427181503940434, 0.24576612013545354, 0.24881166183704698, 0.2518547454104758, 0.25489534079167714, 0.25793341794117025, 0.260968946844353, 0.2640018975117988, 0.26703223997955255, 0.27005994430942676, 0.2730849805892974, 0.2761073189333995, 0.2791269294826221, 0.2821437824048034, 0.28515784789502563, 0.2881690961759093, 0.29117749749790744, 0.2941830221395997, 0.2971856404079855, 0.30018532263877806, 0.3031820391966969, 0.3061757604757607, 0.30916645689958033, 0.31215409892165025, 0.315138657025641, 0.31812010172569044, 0.32109840356669545, 0.32407353312460246, 0.32704546100669857, 0.33001415785190163, 0.3329795943310505, 0.33594174114719483, 0.3389005690358841, 0.3418560487654574, 0.34480815113733165, 0.34775684698629045, 0.3507021071807718, 0.3536439026231564, 0.3565822042500548, 0.35951698303259455, 0.3624482099767071, 0.36537585612341417, 0.36829989254911394, 0.37122029036586657, 0.3741370207216799, 0.37705005480079434, 0.3799593638239676, 0.3828649190487589, 0.385766691769813, 0.3886646533191438, 0.3915587750664177, 0.3944490284192361, 0.39733538482341846, 0.4002178157632836, 0.40309629276193215, 0.4059707873815275, 0.40884127122357683, 0.41170771592921185, 0.4145700931794686, 0.41742837469556754, 0.42028253223919276, 0.42313253761277114, 0.4259783626597507, 0.42881997926487897, 0.43165735935448063, 0.4344904748967348, 0.43731929790195234, 0.4401438004228519, 0.44296395455483617, 0.445779732436268, 0.4485911062487449, 0.4513980482173744, 0.45420053061104837, 0.45699852574271693, 0.45979200596966185, 0.4625809436937699, 0.4653653113618054, 0.46814508146568234, 0.4709202265427363, 0.4736907191759956, 0.47645653199445226, 0.47921763767333253, 0.4819740089343666, 0.48472561854605833, 0.48747243932395384, 0.4902144441309109, 0.4929516058773663, 0.49568389752160347, 0.49841129207002044, 0.5011337625773953, 0.5038512821471537, 0.5065638239316335, 0.5092713611323508, 0.5119738670002639, 0.5146713148360386, 0.5173636779903108, 0.5200509298639509, 0.5227330439083256, 0.525409993625561, 0.528081752568804, 0.5307482943424833, 0.5334095926025708, 0.5360656210568414, 0.5387163534651331, 0.5413617636396058, 0.5440018254450003, 0.5466365127988966, 0.5492657996719715, 0.5518896600882554, 0.5545080681253896, 0.5571209979148817, 0.5597284236423617, 0.5623303195478371, 0.5649266599259464, 0.5675174191262146, 0.5701025715533049, 0.5726820916672735, 0.57525595398382, 0.5778241330745406, 0.5803866035671786, 0.5829433401458751, 0.5854943175514196, 0.5880395105814988, 0.5905788940909463, 0.5931124429919904, 0.5956401322545027, 0.5981619369062444, 0.600677832033114, 0.6031877927793927, 0.6056917943479906, 0.6081898120006908, 0.6106818210583949, 0.6131677969013658, 0.6156477149694718, 0.6181215507624285, 0.6205892798400412, 0.6230508778224466, 0.6255063203903531, 0.6279555832852816, 0.6303986423098045, 0.6328354733277857, 0.6352660522646181, 0.6376903551074622, 0.6401083579054827, 0.6425200367700857, 0.6449253678751543, 0.6473243274572839, 0.6497168918160177, 0.6521030373140798, 0.6544827403776098, 0.6568559774963945, 0.6592227252241015, 0.6615829601785098, 0.6639366590417412, 0.6662837985604906, 0.6686243555462559, 0.6709583068755671, 0.6732856294902141, 0.6756063003974755, 0.6779202966703449, 0.6802275954477582, 0.6825281739348187, 0.6848220094030226, 0.6871090791904838, 0.6893893607021575, 0.6916628314100631, 0.693929468853508, 0.6961892506393077, 0.6984421544420086, 0.700688158004108, 0.7029272391362733, 0.7051593757175627, 0.707384545695642, 0.7096027270870044, 0.711813897977186, 0.7140180365209827, 0.7162151209426668, 0.7184051295362018, 0.7205880406654561, 0.7227638327644172, 0.7249324843374059, 0.7270939739592863, 0.7292482802756799, 0.7313953820031744, 0.7335352579295364, 0.7356678869139184, 0.7377932478870695, 0.7399113198515426, 0.7420220818819026, 0.744125513124932, 0.7462215927998385, 0.7483103001984588, 0.7503916146854637, 0.7524655156985627, 0.754531982748706, 0.7565909954202876, 0.7586425333713469, 0.7606865763337695, 0.7627231041134874, 0.7647520965906791, 0.7667735337199675, 0.7687873955306185, 0.770793662126738, 0.7727923136874691, 0.774783330467187, 0.7767666927956944, 0.7787423810784164, 0.7807103757965934, 0.7826706575074741, 0.7846232068445077, 0.7865680045175353, 0.7885050313129801, 0.7904342680940377, 0.792355695800865, 0.7942692954507681, 0.7961750481383906, 0.7980729350358996, 0.7999629373931723, 0.8018450365379808, 0.803719213876177, 0.8055854508918758, 0.8074437291476388, 0.8092940302846553, 0.8111363360229249, 0.8129706281614371, 0.8147968885783518, 0.816615099231178, 0.8184252421569521, 0.8202272994724156, 0.8220212533741913, 0.8238070861389595, 0.8255847801236331, 0.8273543177655321, 0.8291156815825564, 0.8308688541733595, 0.8326138182175193, 0.8343505564757104, 0.8360790517898735, 0.8377992870833854, 0.8395112453612275, 0.8412149097101534, 0.8429102632988572, 0.8445972893781382, 0.8462759712810671, 0.8479462924231513, 0.8496082363024975, 0.8512617864999754, 0.8529069266793803, 0.8545436405875936, 0.8561719120547442, 0.8577917249943672, 0.8594030634035643, 0.8610059113631606, 0.8626002530378628, 0.8641860726764146, 0.8657633546117531, 0.867332083261164, 0.8688922431264344, 0.8704438187940065, 0.8719867949351299, 0.8735211563060132, 0.8750468877479741, 0.8765639741875899, 0.8780724006368452, 0.8795721521932816, 0.8810632140401432, 0.8825455714465249, 0.8840192097675159, 0.8854841144443459, 0.8869402710045283, 0.8883876650620035, 0.8898262823172801, 0.8912561085575778, 0.8926771296569662, 0.8940893315765054, 0.8954927003643844, 0.8968872221560586, 0.8982728831743872, 0.8996496697297693, 0.9010175682202791, 0.9023765651317996, 0.9037266470381573, 0.9050678006012541, 0.9064000125711993, 0.9077232697864404, 0.9090375591738927, 0.9103428677490696, 0.9116391826162099, 0.9129264909684057, 0.9142047800877281, 0.9154740373453543, 0.9167342502016907, 0.9179854062064986, 0.9192274929990153, 0.9204604983080776, 0.9216844099522427, 0.9228992158399079, 0.9241049039694311, 0.9253014624292485, 0.9264888793979928, 0.9276671431446101, 0.9288362420284748, 0.9299961644995058, 0.9311468990982801, 0.932288434456146, 0.9334207592953355, 0.9345438624290754, 0.9356577327616985, 0.9367623592887524, 0.9378577310971091, 0.938943837365072, 0.9400206673624831, 0.9410882104508294, 0.9421464560833474, 0.9431953938051277, 0.944235013253218, 0.9452653041567258, 0.9462862563369197, 0.9472978597073298, 0.9483001042738479, 0.9492929801348252, 0.9502764774811715, 0.9512505865964508, 0.9522152978569783, 0.9531706017319148, 0.9541164887833612, 0.9550529496664516, 0.9559799751294459, 0.9568975560138205, 0.9578056832543599, 0.9587043478792452, 0.959593541010143, 0.960473253862294, 0.9613434777445982, 0.9622042040597021, 0.9630554243040831, 0.9638971300681336, 0.9647293130362439, 0.9655519649868846, 0.9663650777926878, 0.9671686434205272, 0.9679626539315976, 0.9687471014814936, 0.9695219783202864, 0.970287276792601, 0.9710429893376917, 0.9717891084895165, 0.9725256268768111, 0.973252537223162, 0.9739698323470777, 0.9746775051620601, 0.9753755486766748, 0.9760639559946193, 0.976742720314792, 0.9774118349313591, 0.9780712932338202, 0.9787210887070751, 0.9793612149314864, 0.9799916655829445, 0.9806124344329288, 0.9812235153485701, 0.9818249022927109, 0.9824165893239648, 0.9829985705967758, 0.9835708403614751, 0.9841333929643393, 0.9846862228476447, 0.9852293245497233, 0.9857626927050165, 0.9862863220441276, 0.9868002073938746, 0.9873043436773412, 0.9877987259139261, 0.9882833492193934, 0.98875820880592, 0.9892232999821434, 0.9896786181532077, 0.9901241588208092, 0.9905599175832408, 0.9909858901354354, 0.9914020722690086, 0.9918084598723, 0.9922050489304145, 0.9925918355252606, 0.9929688158355909, 0.9933359861370382, 0.9936933428021535, 0.9940408823004411, 0.9943786011983938, 0.9947064961595269, 0.9950245639444106, 0.995332801410703, 0.9956312055131803, 0.9959197733037669, 0.9961985019315652, 0.9964673886428831, 0.9967264307812617, 0.9969756257875008, 0.9972149711996852, 0.9974444646532082, 0.9976641038807956, 0.9978738867125272, 0.9980738110758594, 0.9982638749956445, 0.9984440765941512, 0.9986144140910828, 0.9987748858035943, 0.9989254901463098, 0.9990662256313378, 0.9991970908682858, 0.9993180845642742, 0.9994292055239488, 0.9995304526494934, 0.9996218249406393, 0.9997033214946769, 0.9997749415064627, 0.9998366842684291, 0.9998885491705899, 0.9999305357005471, 0.9999626434434962, 0.9999848720822294, 0.9999972213971394, 0.9999996912662218, 0.9999922816650751, 0.9999749926669027, 0.9999478244425106, 0.9999107772603066, 0.9998638514862973, 0.9998070475840847, 0.9997403661148613, 0.9996638077374049, 0.9995773732080722, 0.9994810633807905, 0.9993748792070504, 0.9992588217358954, 0.9991328921139124, 0.9989970915852197, 0.9988514214914548, 0.9986958832717616, 0.998530478462776, 0.99835520869861, 0.9981700757108368, 0.9979750813284729, 0.9977702274779598, 0.997555516183146, 0.9973309495652656, 0.9970965298429187, 0.9968522593320488, 0.9965981404459197, 0.9963341756950921, 0.9960603676873989, 0.995776719127919, 0.9954832328189506, 0.9951799116599839, 0.9948667586476722, 0.9945437768758023, 0.994210969535264, 0.9938683399140186, 0.9935158913970662, 0.9931536274664124, 0.9927815517010343, 0.9923996677768443, 0.9920079794666544, 0.991606490640139, 0.9911952052637959, 0.9907741274009082, 0.9903432612115034, 0.9899026109523125, 0.9894521809767279, 0.9889919757347606, 0.9885219997729958, 0.9880422577345487, 0.9875527543590178, 0.9870534944824386, 0.9865444830372357, 0.9860257250521743, 0.9854972256523098, 0.984958990058938, 0.984411023589543, 0.983853331657745, 0.9832859197732465, 0.982708793541778, 0.9821219586650427, 0.9815254209406601, 0.9809191862621087, 0.9803032606186678, 0.9796776500953583, 0.9790423608728828, 0.978397399227564, 0.9777427715312833, 0.9770784842514176, 0.9764045439507755, 0.9757209572875317, 0.9750277310151628, 0.974324871982379, 0.9736123871330575, 0.9728902835061733, 0.9721585682357299, 0.9714172485506886, 0.9706663317748975, 0.9699058253270189, 0.9691357367204558, 0.9683560735632782, 0.9675668435581473, 0.9667680545022398, 0.965959714287171, 0.9651418308989163, 0.9643144124177327, 0.9634774670180793, 0.9626310029685355, 0.9617750286317205, 0.9609095524642097, 0.9600345830164518, 0.9591501289326843, 0.9582561989508472, 0.9573528019024984, 0.9564399467127246, 0.9555176424000543, 0.9545858980763684, 0.9536447229468099, 0.9526941263096935, 0.9517341175564132, 0.9507647061713498, 0.9497859017317772, 0.9487977139077678, 0.9478001524620966, 0.9467932272501455, 0.945776948219805, 0.9447513254113767, 0.9437163689574737, 0.9426720890829208, 0.9416184961046529, 0.9405556004316138, 0.9394834125646527, 0.9384019430964213, 0.9373112027112682, 0.9362112021851339, 0.9351019523854439, 0.9339834642710024, 0.9328557488918827, 0.9317188173893186, 0.9305726809955946, 0.9294173510339345, 0.92825283891839, 0.9270791561537273, 0.9258963143353138, 0.9247043251490038, 0.9235032003710226, 0.9222929518678502, 0.9210735915961046, 0.9198451316024228, 0.9186075840233425, 0.9173609610851821, 0.9161052751039194, 0.9148405384850706, 0.9135667637235674, 0.9122839634036334, 0.9109921501986602, 0.9096913368710817, 0.9083815362722486, 0.9070627613423007, 0.9057350251100397, 0.9043983406928006, 0.9030527212963207, 0.9016981802146117, 0.9003347308298253, 0.8989623866121235, 0.8975811611195446, 0.8961910679978685, 0.8947921209804836, 0.893384333888249, 0.8919677206293598, 0.8905422951992092, 0.8891080716802493, 0.8876650642418533, 0.8862132871401742, 0.8847527547180054, 0.8832834814046381, 0.8818054817157183, 0.8803187702531046, 0.8788233617047234, 0.8773192708444233, 0.8758065125318298, 0.8742851017121981, 0.8727550534162658, 0.8712163827601044, 0.8696691049449692, 0.8681132352571503, 0.8665487890678203, 0.8649757818328839, 0.8633942290928242, 0.8618041464725485, 0.8602055496812363, 0.8585984545121818, 0.8569828768426383, 0.8553588326336627, 0.853726337929956, 0.8520854088597062, 0.8504360616344284, 0.848778312548804, 0.8471121779805213, 0.8454376743901116, 0.8437548183207888, 0.8420636263982847, 0.8403641153306841, 0.8386563019082616, 0.8369402030033143, 0.8352158355699952, 0.8334832166441466, 0.8317423633431305, 0.8299932928656607, 0.8282360224916326, 0.8264705695819514, 0.8246969515783624, 0.8229151860032768, 0.8211252904596004, 0.8193272826305583, 0.8175211802795206, 0.8157070012498272, 0.8138847634646118, 0.8120544849266234, 0.8102161837180504, 0.8083698780003398, 0.8065155860140201, 0.8046533260785195, 0.8027831165919848, 0.8009049760311012, 0.7990189229509077, 0.7971249759846155, 0.7952231538434233, 0.7933134753163318, 0.7913959592699589, 0.7894706246483536, 0.7875374904728074, 0.7855965758416681, 0.7836478999301495, 0.7816914819901435, 0.779727341350029, 0.7777554974144804, 0.7757759696642779, 0.7737887776561123, 0.7717939410223943, 0.7697914794710594, 0.7677814127853725, 0.7657637608237341, 0.7637385435194824, 0.761705780880698, 0.7596654929900051, 0.757617700004373, 0.755562422154918, 0.7534996797467031, 0.7514294931585361, 0.7493518828427708, 0.7472668693251021, 0.7451744732043656, 0.7430747151523333, 0.740967615913508, 0.738853196304921, 0.7367314772159239, 0.7346024796079837, 0.732466224514476, 0.730322733040475, 0.728172026362548, 0.7260141257285444, 0.7238490524573851, 0.7216768279388545, 0.7194974736333859, 0.7173110110718521, 0.7151174618553523, 0.7129168476549963, 0.7107091902116942, 0.7084945113359379, 0.7062728329075885, 0.7040441768756591, 0.7018085652580969, 0.6995660201415671, 0.6973165636812348, 0.6950602181005443, 0.6927970056910022, 0.6905269488119543, 0.6882500698903672, 0.6859663914206058, 0.6836759359642096, 0.681378726149673, 0.6790747846722183, 0.6767641342935738, 0.674446797841749, 0.6721227982108063, 0.6697921583606385, 0.6674549013167402, 0.6651110501699791, 0.6627606280763705, 0.6604036582568462, 0.6580401639970268, 0.6556701686469911, 0.6532936956210441, 0.6509107683974883, 0.6485214105183887, 0.646125645589343, 0.6437234972792474, 0.6413149893200609, 0.638900145506574, 0.636478989696172, 0.6340515458085985, 0.6316178378257209, 0.6291778897912916, 0.6267317258107125, 0.6242793700507955, 0.6218208467395231, 0.6193561801658114, 0.6168853946792673, 0.6144085146899502, 0.6119255646681303, 0.6094365691440451, 0.6069415527076603, 0.6044405400084232, 0.6019335557550224, 0.5994206247151421, 0.5969017717152167, 0.5943770216401876, 0.5918463994332559, 0.5893099300956354, 0.5867676386863079, 0.5842195503217725, 0.5816656901758008, 0.5791060834791861, 0.5765407555194936, 0.573969731640813, 0.5713930372435054, 0.5688106977839547, 0.5662227387743146, 0.5636291857822566, 0.5610300644307185, 0.5584254003976504, 0.5558152194157605, 0.5531995472722627, 0.5505784098086193, 0.5479518329202883, 0.545319842556466, 0.5426824647198305, 0.5400397254662861, 0.5373916509047041, 0.5347382671966666, 0.5320796005562075, 0.529415677249552, 0.5267465235948596, 0.524072165961963, 0.5213926307721063, 0.5187079444976863, 0.5160181336619887, 0.513323224838928, 0.5106232446527845, 0.5079182197779395, 0.5052081769386148, 0.5024931429086051, 0.4997731445110173, 0.49704820861800314, 0.4943183621504932, 0.4915836320779331, 0.48884404541801585, 0.486099629236414, 0.48335041064651457, 0.4805964168091484, 0.4778376749323244, 0.4750742122709596, 0.47230605612660875, 0.4695332338471973, 0.4667557728267481, 0.4639737005051135, 0.46118704436770297, 0.4583958319452106, 0.45560009081334535, 0.45279984859255745, 0.4499951329477642, 0.4471859715880798, 0.44437239226653796, 0.4415544227798208, 0.438732090967983, 0.4359054247141755, 0.4330744519443727, 0.43023920062709375, 0.42739969877312867, 0.4245559744352605, 0.4217080557079871, 0.4188559707272462, 0.41599974767013437, 0.41313941475463134, 0.41027500023932023, 0.40740653242310676, 0.4045340396449426, 0.4016575502835437, 0.39877709275710915, 0.3958926955230428, 0.39300438707766927, 0.39011219595595514, 0.3872161507312257, 0.38431628001488144, 0.38141261245611857, 0.37850517674164225, 0.37559400159538636, 0.37267911577822843, 0.3697605480877041, 0.3668383273577253, 0.3639124824582941, 0.36098304229521616, 0.35805003580981815, 0.35511349197865844, 0.35217343981324367, 0.34922990835974116, 0.3462829266986903, 0.3433325239447187, 0.3403787292462505, 0.33742157178522203, 0.33446108077679176, 0.33149728546905066, 0.3285302151427358, 0.3255598991109394, 0.32258636671881874, 0.31960964734330827, 0.3166297703928268, 0.3136467653069894, 0.3106606615563155, 0.30767148864193655, 0.3046792760953073, 0.3016840534779108, 0.29868585038096923, 0.29568469642515044, 0.29268062126027394, 0.2896736545650204, 0.2866638260466374, 0.28365116544064456, 0.28063570251054254, 0.27761746704751605, 0.27459648887014215, 0.2715727978240943, 0.2685464237818467, 0.2655173966423816, 0.26248574633089083, 0.25945150279848306, 0.25641469602188666, 0.25337535600315214, 0.2503335127693585, 0.24728919637231497, 0.24424243688826333, 0.2411932644175833, 0.23814170908449192, 0.23508780103674906, 0.23203157044535808, 0.22897304750426659, 0.2259122624300711, 0.2228492454617151, 0.21978402686019333, 0.2167166369082515, 0.2136471059100858, 0.21057546419104656, 0.2075017420973352, 0.20442596999570745, 0.20134817827317206, 0.1982683973366892, 0.1951866576128728, 0.19210298954768854, 0.18901742360615179, 0.18592999027202972, 0.18284072004753654, 0.17974964345303537, 0.17665679102673523, 0.17356219332438816, 0.17046588091899034, 0.1673678844004766, 0.16426823437542112, 0.161166961466734, 0.1580640963133572, 0.1549596695699645, 0.1518537119066574, 0.14874625400866076, 0.14563732657602277, 0.14252696032330797, 0.13941518597929717, 0.13630203428668222, 0.13318753600176123, 0.13007172189413768, 0.12695462274641287, 0.123836269353885, 0.12071669252424352, 0.11759592307726349, 0.1144739918445037, 0.1113509296690008, 0.10822676740496319, 0.10510153591746937, 0.10197526608215945, 0.09884798878493316, 0.09571973492164343, 0.09259053539778982, 0.08946042112821631, 0.0863294230368023, 0.08319757205616021, 0.08006489912732856, 0.07693143519946496, 0.073797211229543, 0.07066225818204507, 0.06752660702865515, 0.06439028874795592, 0.061253334325119146, 0.05811577475160266, 0.054977641024842865, 0.051838964147947184, 0.04869977512939084, 0.04556010498270697, 0.04241998472618333, 0.03927944538255455, 0.036138517978694246, 0.032997233545311234, 0.029855623116641573, 0.026713717730140665, 0.023571548426179704, 0.02042914624773548, 0.017286542240086786, 0.014143767450506396, 0.011000852927952966, 0.007857829722767433, 0.004714728886362679, 0.001571581470919876, -0.001571581470919631, -0.0047147288863624345, -0.007857829722766742, -0.01100085292795272, -0.01414376745050615, -0.017286542240086543, -0.020429146247735237, -0.02357154842617946, -0.026713717730140422, -0.02985562311664133, -0.032997233545310985, -0.036138517978693996, -0.0392794453825543, -0.04241998472618308, -0.04556010498270672, -0.048699775129390145, -0.051838964147946934, -0.054977641024842615, -0.05811577475160241, -0.0612533343251189, -0.06439028874795567, -0.0675266070286549, -0.07066225818204482, -0.07379721122954275, -0.07693143519946471, -0.08006489912732832, -0.08319757205615996, -0.08632942303680206, -0.08946042112821563, -0.09259053539778958, -0.09571973492164318, -0.09884798878493291, -0.1019752660821592, -0.10510153591746914, -0.10822676740496294, -0.11135092966900055, -0.11447399184450346, -0.11759592307726324, -0.12071669252424329, -0.12383626935388475, -0.12695462274641264, -0.13007172189413702, -0.133187536001761, -0.136302034286682, -0.13941518597929695, -0.14252696032330778, -0.14563732657602255, -0.14874625400866054, -0.15185371190665717, -0.15495966956996426, -0.15806409631335697, -0.1611669614667338, -0.1642682343754209, -0.16736788440047637, -0.17046588091898968, -0.17356219332438794, -0.176656791026735, -0.17974964345303515, -0.18284072004753632, -0.18592999027202906, -0.1890174236061516, -0.1921029895476883, -0.19518665761287257, -0.198268397336689, -0.20134817827317184, -0.20442596999570725, -0.207501742097335, -0.2105754641910459, -0.21364710591008557, -0.2167166369082513, -0.21978402686019313, -0.2228492454617149, -0.22591226243007043, -0.22897304750426636, -0.23203157044535785, -0.23508780103674884, -0.2381417090844917, -0.24119326441758307, -0.2442424368882631, -0.24728919637231478, -0.2503335127693583, -0.253375356003152, -0.25641469602188643, -0.25945150279848284, -0.2624857463308906, -0.26551739664238094, -0.2685464237818465, -0.2715727978240941, -0.27459648887014193, -0.2776174670475159, -0.2806357025105423, -0.28365116544064434, -0.2866638260466372, -0.2896736545650202, -0.2926806212602737, -0.2956846964251503, -0.298685850380969, -0.30168405347791055, -0.30467927609530665, -0.30767148864193633, -0.31066066155631533, -0.31364676530698915, -0.3166297703928266, -0.31960964734330805, -0.3225863667188185, -0.32555989911093924, -0.32853021514273556, -0.33149728546905044, -0.33446108077679154, -0.3374215717852218, -0.3403787292462503, -0.3433325239447181, -0.34628292669869015, -0.34922990835974094, -0.35217343981324345, -0.3551134919786582, -0.358050035809818, -0.360983042295216, -0.3639124824582939, -0.3668383273577251, -0.36976054808770387, -0.3726791157782282, -0.37559400159538614, -0.378505176741642, -0.38141261245611796, -0.3843162800148812, -0.38721615073122545, -0.3901121959559549, -0.3930043870776691, -0.3958926955230422, -0.39877709275710893, -0.40165755028354355, -0.4045340396449424, -0.4074065324231066, -0.41027500023932, -0.4131394147546312, -0.41599974767013415, -0.41885597072724556, -0.42170805570798686, -0.4245559744352603, -0.42739969877312844, -0.43023920062709353, -0.4330744519443721, -0.43590542471417526, -0.4387320909679828, -0.4415544227798206, -0.4443723922665378, -0.4471859715880796, -0.44999513294776405, -0.45279984859255723, -0.4556000908133452, -0.4583958319452104, -0.46118704436770275, -0.4639737005051133, -0.4667557728267479, -0.4695332338471967, -0.47230605612660853, -0.47507421227095936, -0.47783767493232415, -0.48059641680914816, -0.48335041064651435, -0.4860996292364138, -0.4888440454180157, -0.4915836320779329, -0.49431836215049296, -0.4970482086180029, -0.4997731445110171, -0.5024931429086049, -0.5052081769386141, -0.5079182197779394, -0.5106232446527844, -0.5133232248389279, -0.5160181336619885, -0.5187079444976861, -0.5213926307721061, -0.5240721659619629, -0.5267465235948595, -0.5294156772495519, -0.5320796005562073, -0.5347382671966664, -0.5373916509047039, -0.5400397254662855, -0.5426824647198303, -0.5453198425564659, -0.547951832920288, -0.5505784098086192, -0.5531995472722625, -0.5558152194157604, -0.5584254003976503, -0.5610300644307183, -0.5636291857822565, -0.5662227387743145, -0.5688106977839544, -0.5713930372435052, -0.5739697316408124, -0.5765407555194934, -0.5791060834791859, -0.5816656901758006, -0.5842195503217724, -0.5867676386863073, -0.5893099300956353, -0.5918463994332557, -0.5943770216401875, -0.5969017717152166, -0.5994206247151419, -0.6019335557550222, -0.604440540008423, -0.6069415527076597, -0.609436569144045, -0.6119255646681301, -0.6144085146899501, -0.6168853946792671, -0.6193561801658108, -0.6218208467395229, -0.6242793700507953, -0.6267317258107123, -0.6291778897912914, -0.6316178378257207, -0.6340515458085982, -0.6364789896961719, -0.6389001455065738, -0.6413149893200607, -0.6437234972792472, -0.6461256455893429, -0.6485214105183885, -0.6509107683974877, -0.653293695621044, -0.655670168646991, -0.6580401639970267, -0.660403658256846, -0.6627606280763704, -0.6651110501699788, -0.66745490131674, -0.6697921583606384, -0.6721227982108061, -0.6744467978417488, -0.6767641342935737, -0.679074784672218, -0.6813787261496725, -0.6836759359642095, -0.6859663914206056, -0.6882500698903671, -0.6905269488119542, -0.6927970056910021, -0.6950602181005442, -0.6973165636812346, -0.699566020141567, -0.7018085652580967, -0.704044176875659, -0.7062728329075884, -0.7084945113359375, -0.7107091902116937, -0.7129168476549961, -0.715117461855352, -0.717311011071852, -0.7194974736333857, -0.7216768279388543, -0.723849052457385, -0.7260141257285442, -0.7281720263625477, -0.7303227330404747, -0.7324662245144757, -0.7346024796079834, -0.7367314772159236, -0.7388531963049205, -0.7409676159135077, -0.743074715152333, -0.7451744732043655, -0.7472668693251019, -0.7493518828427703, -0.7514294931585359, -0.7534996797467028, -0.7555624221549178, -0.7576177000043728, -0.7596654929900045, -0.761705780880698, -0.7637385435194822, -0.7657637608237337, -0.7677814127853726, -0.7697914794710592, -0.7717939410223942, -0.7737887776561119, -0.7757759696642776, -0.7777554974144801, -0.7797273413500284, -0.7816914819901435, -0.7836478999301493, -0.7855965758416676, -0.7875374904728075, -0.7894706246483535, -0.7913959592699588, -0.7933134753163318, -0.7952231538434231, -0.7971249759846153, -0.7990189229509073, -0.800904976031101, -0.8027831165919845, -0.8046533260785189, -0.8065155860140201, -0.8083698780003395, -0.8102161837180498, -0.8120544849266235, -0.8138847634646116, -0.815707001249827, -0.81752118027952, -0.8193272826305581, -0.8211252904596001, -0.8229151860032764, -0.8246969515783623, -0.8264705695819512, -0.8282360224916322, -0.8299932928656608, -0.8317423633431302, -0.8334832166441462, -0.8352158355699952, -0.8369402030033142, -0.8386563019082613, -0.8403641153306837, -0.8420636263982845, -0.8437548183207886, -0.8454376743901112, -0.8471121779805211, -0.8487783125488038, -0.850436061634428, -0.8520854088597063, -0.8537263379299559, -0.8553588326336623, -0.8569828768426383, -0.8585984545121816, -0.8602055496812362, -0.8618041464725482, -0.863394229092824, -0.8649757818328837, -0.86654878906782, -0.8681132352571501, -0.869669104944969, -0.871216382760104, -0.8727550534162658, -0.874285101712198, -0.8758065125318295, -0.8773192708444233, -0.8788233617047234, -0.8803187702531045, -0.8818054817157179, -0.883283481404638, -0.8847527547180053, -0.8862132871401739, -0.8876650642418532, -0.8891080716802492, -0.890542295199209, -0.8919677206293599, -0.8933843338882489, -0.8947921209804833, -0.8961910679978686, -0.8975811611195446, -0.8989623866121234, -0.900334730829825, -0.9016981802146116, -0.9030527212963206, -0.9043983406928002, -0.9057350251100398, -0.9070627613423006, -0.9083815362722483, -0.9096913368710817, -0.9109921501986601, -0.9122839634036333, -0.9135667637235675, -0.9148405384850706, -0.9161052751039193, -0.9173609610851818, -0.9186075840233425, -0.9198451316024226, -0.9210735915961044, -0.9222929518678502, -0.9235032003710225, -0.9247043251490037, -0.9258963143353138, -0.9270791561537273, -0.9282528389183899, -0.9294173510339346, -0.9305726809955945, -0.9317188173893185, -0.9328557488918824, -0.9339834642710024, -0.9351019523854439, -0.9362112021851337, -0.9373112027112682, -0.9384019430964213, -0.9394834125646526, -0.9405556004316138, -0.9416184961046528, -0.9426720890829206, -0.9437163689574738, -0.9447513254113766, -0.9457769482198048, -0.9467932272501453, -0.9478001524620966, -0.9487977139077677, -0.949785901731777, -0.9507647061713498, -0.9517341175564131, -0.9526941263096933, -0.9536447229468099, -0.9545858980763683, -0.9555176424000542, -0.9564399467127246, -0.9573528019024984, -0.9582561989508471, -0.959150128932684, -0.9600345830164518, -0.9609095524642096, -0.9617750286317204, -0.9626310029685355, -0.9634774670180792, -0.9643144124177326, -0.9651418308989163, -0.965959714287171, -0.9667680545022397, -0.9675668435581474, -0.9683560735632782, -0.9691357367204557, -0.9699058253270187, -0.9706663317748975, -0.9714172485506885, -0.9721585682357297, -0.9728902835061733, -0.9736123871330575, -0.9743248719823789, -0.9750277310151628, -0.9757209572875317, -0.9764045439507754, -0.9770784842514177, -0.9777427715312833, -0.978397399227564, -0.9790423608728827, -0.9796776500953583, -0.9803032606186677, -0.9809191862621086, -0.9815254209406601, -0.9821219586650426, -0.9827087935417779, -0.9832859197732465, -0.983853331657745, -0.984411023589543, -0.9849589900589379, -0.9854972256523098, -0.9860257250521742, -0.9865444830372356, -0.9870534944824386, -0.9875527543590177, -0.9880422577345486, -0.9885219997729958, -0.9889919757347605, -0.9894521809767278, -0.9899026109523126, -0.9903432612115034, -0.9907741274009082, -0.9911952052637958, -0.991606490640139, -0.9920079794666544, -0.9923996677768442, -0.9927815517010343, -0.9931536274664124, -0.9935158913970661, -0.9938683399140186, -0.994210969535264, -0.9945437768758022, -0.9948667586476722, -0.9951799116599839, -0.9954832328189505, -0.9957767191279189, -0.9960603676873989, -0.9963341756950921, -0.9965981404459195, -0.9968522593320487, -0.9970965298429187, -0.9973309495652656, -0.9975555161831459, -0.9977702274779598, -0.9979750813284729, -0.9981700757108369, -0.99835520869861, -0.9985304784627759, -0.9986958832717616, -0.9988514214914548, -0.9989970915852197, -0.9991328921139124, -0.9992588217358954, -0.9993748792070504, -0.9994810633807905, -0.9995773732080722, -0.9996638077374049, -0.9997403661148613, -0.9998070475840847, -0.9998638514862973, -0.9999107772603066, -0.9999478244425106, -0.9999749926669027, -0.9999922816650751, -0.9999996912662218, -0.9999972213971394, -0.9999848720822294, -0.9999626434434962, -0.9999305357005471, -0.9998885491705899, -0.9998366842684291, -0.9997749415064627, -0.9997033214946769, -0.9996218249406393, -0.9995304526494934, -0.9994292055239488, -0.9993180845642742, -0.9991970908682858, -0.9990662256313378, -0.9989254901463098, -0.9987748858035943, -0.9986144140910828, -0.9984440765941512, -0.9982638749956445, -0.9980738110758594, -0.9978738867125272, -0.9976641038807956, -0.9974444646532084, -0.9972149711996852, -0.9969756257875008, -0.9967264307812617, -0.9964673886428831, -0.9961985019315652, -0.9959197733037669, -0.9956312055131803, -0.995332801410703, -0.9950245639444106, -0.9947064961595268, -0.9943786011983938, -0.9940408823004412, -0.9936933428021536, -0.9933359861370382, -0.9929688158355909, -0.9925918355252608, -0.9922050489304145, -0.9918084598723002, -0.9914020722690087, -0.9909858901354354, -0.9905599175832408, -0.9901241588208093, -0.9896786181532077, -0.9892232999821434, -0.9887582088059201, -0.9882833492193935, -0.9877987259139261, -0.9873043436773412, -0.9868002073938749, -0.9862863220441276, -0.9857626927050165, -0.9852293245497235, -0.9846862228476447, -0.9841333929643393, -0.9835708403614752, -0.9829985705967756, -0.9824165893239648, -0.981824902292711, -0.9812235153485702, -0.9806124344329288, -0.9799916655829446, -0.9793612149314866, -0.9787210887070751, -0.9780712932338204, -0.9774118349313592, -0.976742720314792, -0.9760639559946194, -0.9753755486766749, -0.9746775051620603, -0.9739698323470777, -0.9732525372231621, -0.9725256268768113, -0.9717891084895165, -0.9710429893376917, -0.9702872767926012, -0.9695219783202864, -0.9687471014814937, -0.9679626539315977, -0.9671686434205271, -0.9663650777926878, -0.9655519649868847, -0.964729313036244, -0.9638971300681336, -0.9630554243040832, -0.9622042040597023, -0.9613434777445982, -0.9604732538622941, -0.9595935410101433, -0.9587043478792452, -0.95780568325436, -0.9568975560138206, -0.9559799751294458, -0.9550529496664516, -0.9541164887833613, -0.953170601731915, -0.9522152978569783, -0.9512505865964509, -0.9502764774811716, -0.9492929801348252, -0.9483001042738479, -0.94729785970733, -0.9462862563369197, -0.9452653041567258, -0.9442350132532181, -0.9431953938051276, -0.9421464560833475, -0.9410882104508296, -0.9400206673624834, -0.938943837365072, -0.9378577310971092, -0.9367623592887527, -0.9356577327616985, -0.9345438624290755, -0.9334207592953356, -0.932288434456146, -0.9311468990982802, -0.929996164499506, -0.9288362420284747, -0.9276671431446101, -0.9264888793979931, -0.9253014624292488, -0.9241049039694311, -0.922899215839908, -0.9216844099522429, -0.9204604983080776, -0.9192274929990154, -0.9179854062064988, -0.9167342502016907, -0.9154740373453543, -0.9142047800877283, -0.9129264909684056, -0.91163918261621, -0.9103428677490698, -0.909037559173893, -0.9077232697864404, -0.9064000125711995, -0.9050678006012545, -0.9037266470381573, -0.9023765651317996, -0.9010175682202792, -0.8996496697297693, -0.8982728831743874, -0.8968872221560589, -0.8954927003643843, -0.8940893315765055, -0.8926771296569664, -0.8912561085575781, -0.8898262823172801, -0.8883876650620036, -0.8869402710045287, -0.8854841144443459, -0.884019209767516, -0.8825455714465251, -0.8810632140401432, -0.8795721521932816, -0.8780724006368454, -0.8765639741875898, -0.8750468877479743, -0.8735211563060135, -0.8719867949351303, -0.8704438187940066, -0.8688922431264346, -0.8673320832611644, -0.8657633546117532, -0.8641860726764147, -0.8626002530378631, -0.8610059113631607, -0.8594030634035645, -0.8577917249943675, -0.8561719120547441, -0.8545436405875938, -0.8529069266793806, -0.8512617864999759, -0.8496082363024975, -0.8479462924231516, -0.8462759712810675, -0.8445972893781382, -0.8429102632988574, -0.8412149097101538, -0.8395112453612275, -0.8377992870833856, -0.8360790517898739, -0.8343505564757103, -0.8326138182175195, -0.8308688541733598, -0.8291156815825569, -0.8273543177655321, -0.8255847801236335, -0.8238070861389599, -0.8220212533741913, -0.8202272994724158, -0.8184252421569524, -0.816615099231178, -0.8147968885783519, -0.8129706281614374, -0.8111363360229248, -0.8092940302846554, -0.8074437291476391, -0.8055854508918763, -0.8037192138761771, -0.801845036537981, -0.7999629373931727, -0.7980729350358996, -0.7961750481383908, -0.7942692954507685, -0.792355695800865, -0.7904342680940379, -0.7885050313129804, -0.7865680045175357, -0.7846232068445078, -0.7826706575074744, -0.7807103757965939, -0.7787423810784165, -0.7767666927956947, -0.7747833304671874, -0.7727923136874693, -0.7707936621267383, -0.7687873955306188, -0.7667735337199675, -0.7647520965906793, -0.7627231041134878, -0.76068657633377, -0.758642533371347, -0.7565909954202878, -0.7545319827487065, -0.7524655156985628, -0.750391614685464, -0.7483103001984592, -0.7462215927998386, -0.7441255131249322, -0.742022081881903, -0.7399113198515426, -0.7377932478870697, -0.7356678869139188, -0.733535257929537, -0.7313953820031747, -0.7292482802756801, -0.7270939739592869, -0.724932484337406, -0.7227638327644177, -0.7205880406654566, -0.7184051295362018, -0.7162151209426671, -0.7140180365209831, -0.711813897977186, -0.7096027270870047, -0.7073845456956425, -0.7051593757175632, -0.7029272391362734, -0.7006881580041082, -0.6984421544420092, -0.6961892506393077, -0.6939294688535081, -0.6916628314100636, -0.6893893607021574, -0.6871090791904839, -0.684822009403023, -0.6825281739348186, -0.6802275954477583, -0.6779202966703453, -0.6756063003974759, -0.6732856294902141, -0.6709583068755673, -0.6686243555462564, -0.6662837985604906, -0.6639366590417414, -0.6615829601785101, -0.6592227252241014, -0.6568559774963947, -0.6544827403776101, -0.6521030373140797, -0.6497168918160178, -0.6473243274572842, -0.6449253678751548, -0.6425200367700857, -0.640108357905483, -0.6376903551074626, -0.6352660522646181, -0.6328354733277859, -0.6303986423098049, -0.6279555832852814, -0.6255063203903533, -0.623050877822447, -0.6205892798400411, -0.6181215507624286, -0.6156477149694721, -0.6131677969013664, -0.6106818210583949, -0.608189812000691, -0.605691794347991, -0.6031877927793927, -0.6006778320331142, -0.5981619369062449, -0.5956401322545026, -0.5931124429919906, -0.5905788940909467, -0.5880395105814987, -0.5854943175514197, -0.5829433401458755, -0.5803866035671792, -0.5778241330745406, -0.5752559539838202, -0.5726820916672739, -0.5701025715533049, -0.5675174191262147, -0.5649266599259469, -0.5623303195478371, -0.559728423642362, -0.5571209979148821, -0.5545080681253894, -0.5518896600882555, -0.5492657996719718, -0.5466365127988971, -0.5440018254450003, -0.541361763639606, -0.5387163534651336, -0.5360656210568414, -0.5334095926025709, -0.5307482943424837, -0.5280817525688039, -0.5254099936255612, -0.522733043908326, -0.5200509298639507, -0.5173636779903109, -0.5146713148360389, -0.5119738670002645, -0.5092713611323508, -0.5065638239316338, -0.5038512821471542, -0.5011337625773953, -0.4984112920700206, -0.49568389752160397, -0.4929516058773662, -0.4902144441309111, -0.48747243932395423, -0.4847256185460581, -0.4819740089343667, -0.47921763767333286, -0.4764565319944528, -0.4736907191759956, -0.4709202265427366, -0.46814508146568284, -0.46536531136180537, -0.4625809436937701, -0.4597920059696623, -0.4569985257427168, -0.45420053061104854, -0.4513980482173748, -0.4485911062487455, -0.44577973243626806, -0.44296395455483656, -0.44014380042285245, -0.43731929790195234, -0.4344904748967351, -0.43165735935448113, -0.4288199792648789, -0.4259783626597509, -0.4231325376127716, -0.42028253223919265, -0.41742837469556765, -0.414570093179469, -0.4117077159292125, -0.40884127122357694, -0.4059707873815278, -0.4030962927619327, -0.4002178157632836, -0.3973353848234187, -0.3944490284192366, -0.3915587750664176, -0.388664653319144, -0.38576669176981343, -0.3828649190487588, -0.3799593638239678, -0.3770500548007948, -0.37413702072168054, -0.3712202903658666, -0.3682998925491142, -0.3653758561234148, -0.3624482099767071, -0.35951698303259483, -0.3565822042500553, -0.35364390262315637, -0.35070210718077205, -0.3477568469862909, -0.3448081511373316, -0.34185604876545755, -0.3389005690358845, -0.33594174114719544, -0.33297959433105057, -0.33001415785190197, -0.3270454610066991, -0.32407353312460246, -0.3210984035666957, -0.318120101725691, -0.3151386570256409, -0.31215409892165047, -0.30916645689958083, -0.3061757604757606, -0.30318203919669695, -0.30018532263877845, -0.2971856404079861, -0.29418302213959974, -0.2911774974979078, -0.28816909617590986, -0.28515784789502563, -0.2821437824048037, -0.27912692948262263, -0.27610731893339946, -0.27308498058929764, -0.2700599443094272, -0.2670322399795524, -0.2640018975117989, -0.2609689468443534, -0.25793341794117086, -0.2548953407916772, -0.25185474541047614, -0.24881166183704756, -0.24576612013545357, -0.24271815039404365, -0.23966778272515263, -0.23661504726480545, -0.23355997417242227, -0.23050259363051526, -0.22744293584439287, -0.22438103104186416, -0.221316909472935, -0.2182506014095125, -0.2151821371451044, -0.21211154699452314, -0.20903886129358118, -0.20596411039879395, -0.20288732468708245, -0.1998085345554681, -0.19672777042077483, -0.1936450627193313, -0.19056044190666505, -0.1874739384572041, -0.18438558286397852, -0.181295405638314, -0.1782034373095339, -0.1751097084246558, -0.1720142495480933, -0.1689170912613488, -0.16581826416271395, -0.16271779886697002, -0.15961572600508017, -0.15651207622388946, -0.15340688018582477, -0.15030016856858644, -0.14719197206484808, -0.14408232138195567, -0.14097124724161922, -0.13785878037961252, -0.13474495154546792, -0.13162979150217594, -0.1285133310258761, -0.12539560090555552, -0.12227663194274738, -0.1191564549512213, -0.11603510075668165, -0.11291260019646554, -0.10978898411923292, -0.1066642833846645, -0.10353852886315942, -0.10041175143552512, -0.09728398199267561, -0.09415525143532465, -0.09102559067368395, -0.08789503062715248, -0.0847636022240137, -0.0816313364011326, -0.0784982641036448, -0.07536441628465346, -0.07222982390492613, -0.0690945179325836, -0.06595852934279654, -0.0628218891174822, -0.059684628244992995, -0.056546777719813875, -0.05340836854225438, -0.050269431718145886, -0.04712999825852998, -0.04399009917935476, -0.040849765501171045, -0.03770902824882061, -0.03456791845113233, -0.03142646714061828, -0.02828470535316188, -0.025142664127714726, -0.02200037450598828, -0.018857867532150657, -0.015715174252514657, -0.012572325715233661, -0.0094293529699976, -0.006286287067720832, -0.0031431590602380684, -2.4492935982947064e-16], \"x\": [0.0, 0.003143164235707647, 0.006286328471415294, 0.009429492707122941, 0.012572656942830588, 0.015715821178538234, 0.018858985414245882, 0.022002149649953527, 0.025145313885661175, 0.028288478121368824, 0.03143164235707647, 0.03457480659278411, 0.037717970828491765, 0.04086113506419941, 0.044004299299907054, 0.047147463535614706, 0.05029062777132235, 0.053433792007029995, 0.05657695624273765, 0.05972012047844529, 0.06286328471415294, 0.06600644894986059, 0.06914961318556823, 0.07229277742127588, 0.07543594165698353, 0.07857910589269117, 0.08172227012839882, 0.08486543436410647, 0.08800859859981411, 0.09115176283552176, 0.09429492707122941, 0.09743809130693705, 0.1005812555426447, 0.10372441977835235, 0.10686758401405999, 0.11001074824976764, 0.1131539124854753, 0.11629707672118293, 0.11944024095689058, 0.12258340519259824, 0.12572656942830587, 0.12886973366401352, 0.13201289789972118, 0.13515606213542883, 0.13829922637113645, 0.1414423906068441, 0.14458555484255176, 0.1477287190782594, 0.15087188331396706, 0.1540150475496747, 0.15715821178538233, 0.16030137602109, 0.16344454025679764, 0.1665877044925053, 0.16973086872821294, 0.1728740329639206, 0.17601719719962822, 0.17916036143533587, 0.18230352567104352, 0.18544668990675117, 0.18858985414245882, 0.19173301837816648, 0.1948761826138741, 0.19801934684958175, 0.2011625110852894, 0.20430567532099705, 0.2074488395567047, 0.21059200379241233, 0.21373516802811998, 0.21687833226382763, 0.22002149649953529, 0.22316466073524294, 0.2263078249709506, 0.2294509892066582, 0.23259415344236586, 0.23573731767807352, 0.23888048191378117, 0.24202364614948882, 0.24516681038519647, 0.2483099746209041, 0.25145313885661175, 0.2545963030923194, 0.25773946732802705, 0.2608826315637347, 0.26402579579944235, 0.26716896003515, 0.27031212427085766, 0.2734552885065653, 0.2765984527422729, 0.27974161697798056, 0.2828847812136882, 0.28602794544939586, 0.2891711096851035, 0.29231427392081116, 0.2954574381565188, 0.29860060239222647, 0.3017437666279341, 0.30488693086364177, 0.3080300950993494, 0.311173259335057, 0.31431642357076467, 0.3174595878064723, 0.32060275204218, 0.3237459162778876, 0.3268890805135953, 0.3300322447493029, 0.3331754089850106, 0.33631857322071823, 0.3394617374564259, 0.34260490169213353, 0.3457480659278412, 0.3488912301635488, 0.35203439439925643, 0.3551775586349641, 0.35832072287067174, 0.3614638871063794, 0.36460705134208704, 0.3677502155777947, 0.37089337981350234, 0.37403654404921, 0.37717970828491765, 0.3803228725206253, 0.38346603675633295, 0.38660920099204055, 0.3897523652277482, 0.39289552946345585, 0.3960386936991635, 0.39918185793487115, 0.4023250221705788, 0.40546818640628646, 0.4086113506419941, 0.41175451487770176, 0.4148976791134094, 0.41804084334911706, 0.42118400758482466, 0.4243271718205323, 0.42747033605623996, 0.4306135002919476, 0.43375666452765527, 0.4368998287633629, 0.44004299299907057, 0.4431861572347782, 0.4463293214704859, 0.4494724857061935, 0.4526156499419012, 0.45575881417760883, 0.4589019784133164, 0.4620451426490241, 0.46518830688473173, 0.4683314711204394, 0.47147463535614703, 0.4746177995918547, 0.47776096382756233, 0.48090412806327, 0.48404729229897764, 0.4871904565346853, 0.49033362077039294, 0.4934767850061006, 0.4966199492418082, 0.49976311347751584, 0.5029062777132235, 0.5060494419489312, 0.5091926061846388, 0.5123357704203464, 0.5154789346560541, 0.5186220988917617, 0.5217652631274694, 0.524908427363177, 0.5280515915988847, 0.5311947558345923, 0.5343379200703, 0.5374810843060076, 0.5406242485417153, 0.5437674127774229, 0.5469105770131306, 0.5500537412488382, 0.5531969054845458, 0.5563400697202535, 0.5594832339559611, 0.5626263981916688, 0.5657695624273764, 0.5689127266630841, 0.5720558908987917, 0.5751990551344994, 0.578342219370207, 0.5814853836059147, 0.5846285478416223, 0.5877717120773299, 0.5909148763130376, 0.5940580405487452, 0.5972012047844529, 0.6003443690201605, 0.6034875332558682, 0.6066306974915758, 0.6097738617272835, 0.6129170259629911, 0.6160601901986988, 0.6192033544344064, 0.622346518670114, 0.6254896829058217, 0.6286328471415293, 0.631776011377237, 0.6349191756129446, 0.6380623398486523, 0.64120550408436, 0.6443486683200677, 0.6474918325557752, 0.650634996791483, 0.6537781610271906, 0.6569213252628983, 0.6600644894986059, 0.6632076537343135, 0.6663508179700212, 0.6694939822057288, 0.6726371464414365, 0.6757803106771441, 0.6789234749128518, 0.6820666391485594, 0.6852098033842671, 0.6883529676199747, 0.6914961318556824, 0.69463929609139, 0.6977824603270976, 0.7009256245628053, 0.7040687887985129, 0.7072119530342206, 0.7103551172699282, 0.7134982815056359, 0.7166414457413435, 0.7197846099770512, 0.7229277742127588, 0.7260709384484665, 0.7292141026841741, 0.7323572669198817, 0.7355004311555894, 0.738643595391297, 0.7417867596270047, 0.7449299238627123, 0.74807308809842, 0.7512162523341276, 0.7543594165698353, 0.7575025808055429, 0.7606457450412506, 0.7637889092769582, 0.7669320735126659, 0.7700752377483735, 0.7732184019840811, 0.7763615662197888, 0.7795047304554964, 0.7826478946912041, 0.7857910589269117, 0.7889342231626194, 0.792077387398327, 0.7952205516340347, 0.7983637158697423, 0.80150688010545, 0.8046500443411576, 0.8077932085768652, 0.8109363728125729, 0.8140795370482805, 0.8172227012839882, 0.8203658655196958, 0.8235090297554035, 0.8266521939911111, 0.8297953582268188, 0.8329385224625264, 0.8360816866982341, 0.8392248509339417, 0.8423680151696493, 0.845511179405357, 0.8486543436410646, 0.8517975078767723, 0.8549406721124799, 0.8580838363481876, 0.8612270005838952, 0.8643701648196029, 0.8675133290553105, 0.8706564932910182, 0.8737996575267258, 0.8769428217624335, 0.8800859859981411, 0.8832291502338487, 0.8863723144695564, 0.889515478705264, 0.8926586429409717, 0.8958018071766793, 0.898944971412387, 0.9020881356480946, 0.9052312998838024, 0.90837446411951, 0.9115176283552177, 0.9146607925909253, 0.9178039568266328, 0.9209471210623406, 0.9240902852980482, 0.9272334495337559, 0.9303766137694635, 0.9335197780051712, 0.9366629422408788, 0.9398061064765865, 0.9429492707122941, 0.9460924349480018, 0.9492355991837094, 0.952378763419417, 0.9555219276551247, 0.9586650918908323, 0.96180825612654, 0.9649514203622476, 0.9680945845979553, 0.9712377488336629, 0.9743809130693706, 0.9775240773050782, 0.9806672415407859, 0.9838104057764935, 0.9869535700122012, 0.9900967342479088, 0.9932398984836164, 0.9963830627193241, 0.9995262269550317, 1.0026693911907394, 1.005812555426447, 1.0089557196621546, 1.0120988838978624, 1.01524204813357, 1.0183852123692776, 1.0215283766049852, 1.0246715408406928, 1.0278147050764006, 1.0309578693121082, 1.0341010335478158, 1.0372441977835234, 1.0403873620192312, 1.0435305262549388, 1.0466736904906464, 1.049816854726354, 1.0529600189620618, 1.0561031831977694, 1.059246347433477, 1.0623895116691846, 1.0655326759048922, 1.0686758401406, 1.0718190043763076, 1.0749621686120152, 1.0781053328477228, 1.0812484970834306, 1.0843916613191382, 1.0875348255548458, 1.0906779897905534, 1.0938211540262612, 1.0969643182619688, 1.1001074824976764, 1.103250646733384, 1.1063938109690916, 1.1095369752047994, 1.112680139440507, 1.1158233036762146, 1.1189664679119222, 1.12210963214763, 1.1252527963833376, 1.1283959606190452, 1.1315391248547528, 1.1346822890904604, 1.1378254533261682, 1.1409686175618758, 1.1441117817975834, 1.147254946033291, 1.1503981102689989, 1.1535412745047064, 1.156684438740414, 1.1598276029761216, 1.1629707672118295, 1.166113931447537, 1.1692570956832447, 1.1724002599189522, 1.1755434241546598, 1.1786865883903677, 1.1818297526260753, 1.1849729168617829, 1.1881160810974905, 1.1912592453331983, 1.1944024095689059, 1.1975455738046135, 1.200688738040321, 1.2038319022760289, 1.2069750665117365, 1.210118230747444, 1.2132613949831517, 1.2164045592188593, 1.219547723454567, 1.2226908876902747, 1.2258340519259823, 1.2289772161616899, 1.2321203803973977, 1.2352635446331053, 1.2384067088688129, 1.2415498731045205, 1.244693037340228, 1.2478362015759359, 1.2509793658116435, 1.254122530047351, 1.2572656942830587, 1.2604088585187665, 1.263552022754474, 1.2666951869901817, 1.2698383512258893, 1.272981515461597, 1.2761246796973047, 1.2792678439330123, 1.28241100816872, 1.2855541724044275, 1.2886973366401353, 1.291840500875843, 1.2949836651115505, 1.298126829347258, 1.301269993582966, 1.3044131578186735, 1.307556322054381, 1.3106994862900887, 1.3138426505257965, 1.3169858147615041, 1.3201289789972117, 1.3232721432329193, 1.326415307468627, 1.3295584717043347, 1.3327016359400423, 1.33584480017575, 1.3389879644114575, 1.3421311286471653, 1.345274292882873, 1.3484174571185805, 1.3515606213542881, 1.3547037855899957, 1.3578469498257035, 1.3609901140614111, 1.3641332782971187, 1.3672764425328263, 1.3704196067685341, 1.3735627710042417, 1.3767059352399493, 1.379849099475657, 1.3829922637113647, 1.3861354279470723, 1.38927859218278, 1.3924217564184875, 1.3955649206541951, 1.398708084889903, 1.4018512491256105, 1.4049944133613181, 1.4081375775970257, 1.4112807418327336, 1.4144239060684412, 1.4175670703041487, 1.4207102345398563, 1.4238533987755642, 1.4269965630112718, 1.4301397272469794, 1.433282891482687, 1.4364260557183945, 1.4395692199541024, 1.44271238418981, 1.4458555484255176, 1.4489987126612252, 1.452141876896933, 1.4552850411326406, 1.4584282053683482, 1.4615713696040558, 1.4647145338397634, 1.4678576980754712, 1.4710008623111788, 1.4741440265468864, 1.477287190782594, 1.4804303550183018, 1.4835735192540094, 1.486716683489717, 1.4898598477254246, 1.4930030119611324, 1.49614617619684, 1.4992893404325476, 1.5024325046682552, 1.5055756689039628, 1.5087188331396706, 1.5118619973753782, 1.5150051616110858, 1.5181483258467934, 1.5212914900825012, 1.5244346543182088, 1.5275778185539164, 1.530720982789624, 1.5338641470253318, 1.5370073112610394, 1.540150475496747, 1.5432936397324546, 1.5464368039681622, 1.54957996820387, 1.5527231324395776, 1.5558662966752852, 1.5590094609109928, 1.5621526251467006, 1.5652957893824082, 1.5684389536181158, 1.5715821178538234, 1.574725282089531, 1.5778684463252388, 1.5810116105609464, 1.584154774796654, 1.5872979390323616, 1.5904411032680694, 1.593584267503777, 1.5967274317394846, 1.5998705959751922, 1.6030137602109, 1.6061569244466076, 1.6093000886823152, 1.6124432529180228, 1.6155864171537304, 1.6187295813894382, 1.6218727456251458, 1.6250159098608534, 1.628159074096561, 1.6313022383322688, 1.6344454025679764, 1.637588566803684, 1.6407317310393916, 1.6438748952750994, 1.647018059510807, 1.6501612237465146, 1.6533043879822222, 1.6564475522179298, 1.6595907164536376, 1.6627338806893452, 1.6658770449250528, 1.6690202091607604, 1.6721633733964683, 1.6753065376321759, 1.6784497018678834, 1.681592866103591, 1.6847360303392986, 1.6878791945750065, 1.691022358810714, 1.6941655230464217, 1.6973086872821292, 1.700451851517837, 1.7035950157535447, 1.7067381799892523, 1.7098813442249599, 1.7130245084606677, 1.7161676726963753, 1.7193108369320829, 1.7224540011677905, 1.725597165403498, 1.7287403296392059, 1.7318834938749135, 1.735026658110621, 1.7381698223463287, 1.7413129865820365, 1.744456150817744, 1.7475993150534517, 1.7507424792891593, 1.753885643524867, 1.7570288077605747, 1.7601719719962823, 1.7633151362319899, 1.7664583004676975, 1.7696014647034053, 1.7727446289391129, 1.7758877931748205, 1.779030957410528, 1.782174121646236, 1.7853172858819435, 1.788460450117651, 1.7916036143533587, 1.7947467785890663, 1.797889942824774, 1.8010331070604817, 1.8041762712961893, 1.807319435531897, 1.8104625997676047, 1.8136057640033123, 1.81674892823902, 1.8198920924747275, 1.8230352567104353, 1.826178420946143, 1.8293215851818505, 1.832464749417558, 1.8356079136532657, 1.8387510778889735, 1.8418942421246811, 1.8450374063603887, 1.8481805705960963, 1.8513237348318041, 1.8544668990675117, 1.8576100633032193, 1.860753227538927, 1.8638963917746347, 1.8670395560103423, 1.87018272024605, 1.8733258844817575, 1.8764690487174651, 1.879612212953173, 1.8827553771888805, 1.8858985414245881, 1.8890417056602957, 1.8921848698960035, 1.8953280341317111, 1.8984711983674187, 1.9016143626031263, 1.904757526838834, 1.9079006910745417, 1.9110438553102493, 1.914187019545957, 1.9173301837816645, 1.9204733480173724, 1.92361651225308, 1.9267596764887875, 1.9299028407244951, 1.933046004960203, 1.9361891691959106, 1.9393323334316181, 1.9424754976673257, 1.9456186619030333, 1.9487618261387412, 1.9519049903744488, 1.9550481546101564, 1.958191318845864, 1.9613344830815718, 1.9644776473172794, 1.967620811552987, 1.9707639757886946, 1.9739071400244024, 1.97705030426011, 1.9801934684958176, 1.9833366327315252, 1.9864797969672328, 1.9896229612029406, 1.9927661254386482, 1.9959092896743558, 1.9990524539100634, 2.002195618145771, 2.005338782381479, 2.0084819466171866, 2.011625110852894, 2.014768275088602, 2.017911439324309, 2.021054603560017, 2.024197767795725, 2.027340932031432, 2.03048409626714, 2.0336272605028474, 2.036770424738555, 2.039913588974263, 2.0430567532099704, 2.046199917445678, 2.0493430816813856, 2.0524862459170934, 2.055629410152801, 2.0587725743885086, 2.0619157386242164, 2.065058902859924, 2.0682020670956316, 2.0713452313313394, 2.074488395567047, 2.0776315598027546, 2.0807747240384624, 2.08391788827417, 2.0870610525098776, 2.090204216745585, 2.093347380981293, 2.0964905452170006, 2.099633709452708, 2.102776873688416, 2.1059200379241236, 2.109063202159831, 2.112206366395539, 2.115349530631246, 2.118492694866954, 2.121635859102662, 2.124779023338369, 2.127922187574077, 2.1310653518097844, 2.134208516045492, 2.1373516802812, 2.1404948445169074, 2.1436380087526152, 2.146781172988323, 2.1499243372240304, 2.1530675014597382, 2.1562106656954456, 2.1593538299311534, 2.1624969941668613, 2.1656401584025686, 2.1687833226382764, 2.171926486873984, 2.1750696511096916, 2.1782128153453995, 2.181355979581107, 2.1844991438168146, 2.1876423080525225, 2.19078547228823, 2.1939286365239377, 2.197071800759645, 2.200214964995353, 2.2033581292310607, 2.206501293466768, 2.209644457702476, 2.2127876219381832, 2.215930786173891, 2.219073950409599, 2.2222171146453062, 2.225360278881014, 2.228503443116722, 2.2316466073524293, 2.234789771588137, 2.2379329358238444, 2.2410761000595523, 2.24421926429526, 2.2473624285309675, 2.2505055927666753, 2.2536487570023827, 2.2567919212380905, 2.2599350854737983, 2.2630782497095057, 2.2662214139452135, 2.269364578180921, 2.2725077424166287, 2.2756509066523365, 2.278794070888044, 2.2819372351237517, 2.2850803993594595, 2.288223563595167, 2.2913667278308747, 2.294509892066582, 2.29765305630229, 2.3007962205379977, 2.303939384773705, 2.307082549009413, 2.3102257132451203, 2.313368877480828, 2.316512041716536, 2.3196552059522433, 2.322798370187951, 2.325941534423659, 2.3290846986593663, 2.332227862895074, 2.3353710271307815, 2.3385141913664893, 2.341657355602197, 2.3448005198379045, 2.3479436840736123, 2.3510868483093197, 2.3542300125450275, 2.3573731767807353, 2.3605163410164427, 2.3636595052521505, 2.3668026694878583, 2.3699458337235657, 2.3730889979592735, 2.376232162194981, 2.3793753264306887, 2.3825184906663965, 2.385661654902104, 2.3888048191378117, 2.391947983373519, 2.395091147609227, 2.3982343118449347, 2.401377476080642, 2.40452064031635, 2.4076638045520578, 2.410806968787765, 2.413950133023473, 2.4170932972591803, 2.420236461494888, 2.423379625730596, 2.4265227899663033, 2.429665954202011, 2.4328091184377185, 2.4359522826734263, 2.439095446909134, 2.4422386111448415, 2.4453817753805493, 2.448524939616257, 2.4516681038519645, 2.4548112680876724, 2.4579544323233797, 2.4610975965590876, 2.4642407607947954, 2.4673839250305027, 2.4705270892662106, 2.473670253501918, 2.4768134177376258, 2.4799565819733336, 2.483099746209041, 2.4862429104447488, 2.489386074680456, 2.492529238916164, 2.4956724031518718, 2.498815567387579, 2.501958731623287, 2.505101895858995, 2.508245060094702, 2.51138822433041, 2.5145313885661174, 2.517674552801825, 2.520817717037533, 2.5239608812732404, 2.527104045508948, 2.5302472097446556, 2.5333903739803634, 2.536533538216071, 2.5396767024517786, 2.5428198666874864, 2.545963030923194, 2.5491061951589016, 2.5522493593946094, 2.5553925236303168, 2.5585356878660246, 2.5616788521017324, 2.56482201633744, 2.5679651805731476, 2.571108344808855, 2.574251509044563, 2.5773946732802706, 2.580537837515978, 2.583681001751686, 2.5868241659873936, 2.589967330223101, 2.593110494458809, 2.596253658694516, 2.599396822930224, 2.602539987165932, 2.605683151401639, 2.608826315637347, 2.6119694798730544, 2.615112644108762, 2.61825580834447, 2.6213989725801774, 2.624542136815885, 2.627685301051593, 2.6308284652873004, 2.6339716295230082, 2.6371147937587156, 2.6402579579944234, 2.6434011222301312, 2.6465442864658386, 2.6496874507015464, 2.652830614937254, 2.6559737791729616, 2.6591169434086694, 2.662260107644377, 2.6654032718800846, 2.6685464361157925, 2.6716896003515, 2.6748327645872076, 2.677975928822915, 2.681119093058623, 2.6842622572943307, 2.687405421530038, 2.690548585765746, 2.6936917500014532, 2.696834914237161, 2.699978078472869, 2.7031212427085762, 2.706264406944284, 2.7094075711799914, 2.7125507354156992, 2.715693899651407, 2.7188370638871144, 2.7219802281228223, 2.72512339235853, 2.7282665565942374, 2.7314097208299453, 2.7345528850656526, 2.7376960493013605, 2.7408392135370683, 2.7439823777727756, 2.7471255420084835, 2.750268706244191, 2.7534118704798987, 2.7565550347156065, 2.759698198951314, 2.7628413631870217, 2.7659845274227295, 2.769127691658437, 2.7722708558941447, 2.775414020129852, 2.77855718436556, 2.7817003486012677, 2.784843512836975, 2.787986677072683, 2.7911298413083903, 2.794273005544098, 2.797416169779806, 2.8005593340155133, 2.803702498251221, 2.806845662486929, 2.8099888267226363, 2.813131990958344, 2.8162751551940515, 2.8194183194297593, 2.822561483665467, 2.8257046479011745, 2.8288478121368823, 2.8319909763725897, 2.8351341406082975, 2.8382773048440053, 2.8414204690797127, 2.8445636333154205, 2.8477067975511283, 2.8508499617868357, 2.8539931260225435, 2.857136290258251, 2.8602794544939587, 2.8634226187296665, 2.866565782965374, 2.8697089472010817, 2.872852111436789, 2.875995275672497, 2.8791384399082047, 2.882281604143912, 2.88542476837962, 2.8885679326153277, 2.891711096851035, 2.894854261086743, 2.8979974253224503, 2.901140589558158, 2.904283753793866, 2.9074269180295733, 2.910570082265281, 2.9137132465009885, 2.9168564107366963, 2.919999574972404, 2.9231427392081115, 2.9262859034438193, 2.9294290676795267, 2.9325722319152345, 2.9357153961509423, 2.9388585603866497, 2.9420017246223575, 2.9451448888580654, 2.9482880530937727, 2.9514312173294805, 2.954574381565188, 2.9577175458008957, 2.9608607100366036, 2.964003874272311, 2.9671470385080188, 2.970290202743726, 2.973433366979434, 2.9765765312151418, 2.979719695450849, 2.982862859686557, 2.9860060239222648, 2.989149188157972, 2.99229235239368, 2.9954355166293873, 2.998578680865095, 3.001721845100803, 3.0048650093365104, 3.008008173572218, 3.0111513378079255, 3.0142945020436334, 3.017437666279341, 3.0205808305150486, 3.0237239947507564, 3.026867158986464, 3.0300103232221716, 3.0331534874578794, 3.0362966516935868, 3.0394398159292946, 3.0425829801650024, 3.0457261444007098, 3.0488693086364176, 3.052012472872125, 3.0551556371078328, 3.0582988013435406, 3.061441965579248, 3.064585129814956, 3.0677282940506636, 3.070871458286371, 3.074014622522079, 3.077157786757786, 3.080300950993494, 3.083444115229202, 3.086587279464909, 3.089730443700617, 3.0928736079363244, 3.096016772172032, 3.09915993640774, 3.1023031006434474, 3.105446264879155, 3.108589429114863, 3.1117325933505704, 3.114875757586278, 3.1180189218219856, 3.1211620860576934, 3.1243052502934012, 3.1274484145291086, 3.1305915787648164, 3.133734743000524, 3.1368779072362316, 3.1400210714719394, 3.143164235707647, 3.1463073999433546, 3.149450564179062, 3.15259372841477, 3.1557368926504776, 3.158880056886185, 3.162023221121893, 3.1651663853576006, 3.168309549593308, 3.171452713829016, 3.174595878064723, 3.177739042300431, 3.180882206536139, 3.184025370771846, 3.187168535007554, 3.1903116992432614, 3.1934548634789692, 3.196598027714677, 3.1997411919503844, 3.2028843561860922, 3.2060275204218, 3.2091706846575074, 3.2123138488932153, 3.2154570131289226, 3.2186001773646304, 3.2217433416003383, 3.2248865058360456, 3.2280296700717535, 3.231172834307461, 3.2343159985431686, 3.2374591627788765, 3.240602327014584, 3.2437454912502917, 3.2468886554859995, 3.250031819721707, 3.2531749839574147, 3.256318148193122, 3.25946131242883, 3.2626044766645377, 3.265747640900245, 3.268890805135953, 3.2720339693716602, 3.275177133607368, 3.278320297843076, 3.2814634620787833, 3.284606626314491, 3.287749790550199, 3.2908929547859063, 3.294036119021614, 3.2971792832573215, 3.3003224474930293, 3.303465611728737, 3.3066087759644445, 3.3097519402001523, 3.3128951044358597, 3.3160382686715675, 3.3191814329072753, 3.3223245971429827, 3.3254677613786905, 3.328610925614398, 3.3317540898501057, 3.3348972540858135, 3.338040418321521, 3.3411835825572287, 3.3443267467929365, 3.347469911028644, 3.3506130752643517, 3.353756239500059, 3.356899403735767, 3.3600425679714747, 3.363185732207182, 3.36632889644289, 3.3694720606785973, 3.372615224914305, 3.375758389150013, 3.3789015533857203, 3.382044717621428, 3.385187881857136, 3.3883310460928433, 3.391474210328551, 3.3946173745642585, 3.3977605387999663, 3.400903703035674, 3.4040468672713815, 3.4071900315070893, 3.4103331957427967, 3.4134763599785045, 3.4166195242142123, 3.4197626884499197, 3.4229058526856275, 3.4260490169213353, 3.4291921811570427, 3.4323353453927505, 3.435478509628458, 3.4386216738641657, 3.4417648380998735, 3.444908002335581, 3.4480511665712887, 3.451194330806996, 3.454337495042704, 3.4574806592784117, 3.460623823514119, 3.463766987749827, 3.4669101519855348, 3.470053316221242, 3.47319648045695, 3.4763396446926573, 3.479482808928365, 3.482625973164073, 3.4857691373997803, 3.488912301635488, 3.4920554658711955, 3.4951986301069033, 3.498341794342611, 3.5014849585783185, 3.5046281228140264, 3.507771287049734, 3.5109144512854416, 3.5140576155211494, 3.5172007797568567, 3.5203439439925646, 3.5234871082282724, 3.5266302724639798, 3.5297734366996876, 3.532916600935395, 3.5360597651711028, 3.5392029294068106, 3.542346093642518, 3.5454892578782258, 3.548632422113933, 3.551775586349641, 3.554918750585349, 3.558061914821056, 3.561205079056764, 3.564348243292472, 3.567491407528179, 3.570634571763887, 3.5737777359995944, 3.576920900235302, 3.58006406447101, 3.5832072287067174, 3.586350392942425, 3.5894935571781326, 3.5926367214138404, 3.595779885649548, 3.5989230498852556, 3.6020662141209634, 3.605209378356671, 3.6083525425923786, 3.6114957068280864, 3.614638871063794, 3.6177820352995016, 3.6209251995352094, 3.624068363770917, 3.6272115280066246, 3.630354692242332, 3.63349785647804, 3.6366410207137476, 3.639784184949455, 3.642927349185163, 3.6460705134208706, 3.649213677656578, 3.652356841892286, 3.655500006127993, 3.658643170363701, 3.661786334599409, 3.664929498835116, 3.668072663070824, 3.6712158273065314, 3.674358991542239, 3.677502155777947, 3.6806453200136544, 3.6837884842493622, 3.68693164848507, 3.6900748127207774, 3.6932179769564852, 3.6963611411921926, 3.6995043054279004, 3.7026474696636082, 3.7057906338993156, 3.7089337981350234, 3.712076962370731, 3.7152201266064386, 3.7183632908421465, 3.721506455077854, 3.7246496193135616, 3.7277927835492695, 3.730935947784977, 3.7340791120206847, 3.737222276256392, 3.7403654404921, 3.7435086047278077, 3.746651768963515, 3.749794933199223, 3.7529380974349302, 3.756081261670638, 3.759224425906346, 3.7623675901420532, 3.765510754377761, 3.7686539186134684, 3.7717970828491763, 3.774940247084884, 3.7780834113205914, 3.7812265755562993, 3.784369739792007, 3.7875129040277145, 3.7906560682634223, 3.7937992324991296, 3.7969423967348375, 3.8000855609705453, 3.8032287252062527, 3.8063718894419605, 3.809515053677668, 3.8126582179133757, 3.8158013821490835, 3.818944546384791, 3.8220877106204987, 3.8252308748562065, 3.828374039091914, 3.8315172033276217, 3.834660367563329, 3.837803531799037, 3.8409466960347447, 3.844089860270452, 3.84723302450616, 3.8503761887418673, 3.853519352977575, 3.856662517213283, 3.8598056814489903, 3.862948845684698, 3.866092009920406, 3.8692351741561133, 3.872378338391821, 3.8755215026275285, 3.8786646668632363, 3.881807831098944, 3.8849509953346515, 3.8880941595703593, 3.8912373238060667, 3.8943804880417745, 3.8975236522774823, 3.9006668165131897, 3.9038099807488975, 3.9069531449846053, 3.9100963092203127, 3.9132394734560205, 3.916382637691728, 3.9195258019274357, 3.9226689661631435, 3.925812130398851, 3.9289552946345587, 3.932098458870266, 3.935241623105974, 3.9383847873416817, 3.941527951577389, 3.944671115813097, 3.9478142800488047, 3.950957444284512, 3.95410060852022, 3.9572437727559273, 3.960386936991635, 3.963530101227343, 3.9666732654630503, 3.969816429698758, 3.9729595939344655, 3.9761027581701733, 3.979245922405881, 3.9823890866415885, 3.9855322508772963, 3.9886754151130037, 3.9918185793487115, 3.9949617435844194, 3.9981049078201267, 4.0012480720558345, 4.004391236291542, 4.00753440052725, 4.010677564762958, 4.013820728998665, 4.016963893234373, 4.020107057470081, 4.023250221705788, 4.026393385941495, 4.029536550177204, 4.032679714412911, 4.035822878648618, 4.038966042884327, 4.042109207120034, 4.045252371355741, 4.04839553559145, 4.051538699827157, 4.054681864062864, 4.057825028298573, 4.06096819253428, 4.064111356769987, 4.067254521005695, 4.070397685241403, 4.07354084947711, 4.076684013712818, 4.079827177948526, 4.082970342184233, 4.086113506419941, 4.089256670655649, 4.092399834891356, 4.095542999127064, 4.098686163362771, 4.101829327598479, 4.104972491834187, 4.108115656069894, 4.111258820305602, 4.11440198454131, 4.117545148777017, 4.120688313012725, 4.123831477248433, 4.12697464148414, 4.130117805719848, 4.133260969955556, 4.136404134191263, 4.139547298426971, 4.142690462662679, 4.145833626898386, 4.148976791134094, 4.152119955369802, 4.155263119605509, 4.158406283841217, 4.161549448076925, 4.164692612312632, 4.16783577654834, 4.170978940784048, 4.174122105019755, 4.177265269255463, 4.18040843349117, 4.183551597726878, 4.186694761962586, 4.189837926198293, 4.192981090434001, 4.196124254669709, 4.199267418905416, 4.202410583141124, 4.205553747376832, 4.208696911612539, 4.211840075848247, 4.214983240083955, 4.218126404319662, 4.221269568555369, 4.224412732791078, 4.227555897026785, 4.230699061262492, 4.233842225498201, 4.236985389733908, 4.240128553969615, 4.243271718205324, 4.246414882441031, 4.249558046676738, 4.252701210912447, 4.255844375148154, 4.258987539383861, 4.262130703619569, 4.265273867855277, 4.268417032090984, 4.271560196326692, 4.2747033605624, 4.2778465247981075, 4.280989689033815, 4.284132853269523, 4.2872760175052305, 4.290419181740938, 4.293562345976646, 4.2967055102123535, 4.299848674448061, 4.302991838683768, 4.3061350029194765, 4.309278167155184, 4.312421331390891, 4.3155644956265995, 4.318707659862307, 4.321850824098014, 4.3249939883337225, 4.32813715256943, 4.331280316805137, 4.3344234810408455, 4.337566645276553, 4.34070980951226, 4.343852973747968, 4.346996137983676, 4.350139302219383, 4.353282466455091, 4.356425630690799, 4.359568794926506, 4.362711959162214, 4.365855123397922, 4.368998287633629, 4.372141451869337, 4.375284616105045, 4.378427780340752, 4.38157094457646, 4.384714108812167, 4.387857273047875, 4.391000437283583, 4.39414360151929, 4.397286765754998, 4.400429929990706, 4.403573094226413, 4.406716258462121, 4.409859422697829, 4.413002586933536, 4.416145751169244, 4.419288915404952, 4.422432079640659, 4.4255752438763665, 4.428718408112075, 4.431861572347782, 4.4350047365834895, 4.438147900819198, 4.441291065054905, 4.4444342292906125, 4.447577393526321, 4.450720557762028, 4.4538637219977355, 4.457006886233444, 4.460150050469151, 4.4632932147048585, 4.466436378940566, 4.469579543176274, 4.4727227074119815, 4.475865871647689, 4.479009035883397, 4.4821522001191045, 4.485295364354812, 4.48843852859052, 4.4915816928262275, 4.494724857061935, 4.497868021297643, 4.501011185533351, 4.504154349769058, 4.507297514004765, 4.510440678240474, 4.513583842476181, 4.516727006711888, 4.519870170947597, 4.523013335183304, 4.526156499419011, 4.52929966365472, 4.532442827890427, 4.535585992126134, 4.538729156361842, 4.54187232059755, 4.545015484833257, 4.548158649068965, 4.551301813304673, 4.55444497754038, 4.557588141776088, 4.560731306011796, 4.563874470247503, 4.567017634483211, 4.570160798718919, 4.573303962954626, 4.576447127190334, 4.579590291426041, 4.582733455661749, 4.585876619897457, 4.589019784133164, 4.592162948368872, 4.59530611260458, 4.598449276840287, 4.601592441075995, 4.604735605311703, 4.60787876954741, 4.611021933783118, 4.614165098018826, 4.617308262254533, 4.6204514264902405, 4.623594590725949, 4.626737754961656, 4.6298809191973636, 4.633024083433072, 4.636167247668779, 4.639310411904487, 4.642453576140195, 4.645596740375902, 4.64873990461161, 4.651883068847318, 4.655026233083025, 4.658169397318733, 4.66131256155444, 4.664455725790148, 4.667598890025856, 4.670742054261563, 4.673885218497271, 4.677028382732979, 4.680171546968686, 4.683314711204394, 4.686457875440102, 4.689601039675809, 4.692744203911517, 4.695887368147225, 4.699030532382932, 4.702173696618639, 4.705316860854348, 4.708460025090055, 4.711603189325762, 4.714746353561471, 4.717889517797178, 4.721032682032885, 4.724175846268594, 4.727319010504301, 4.730462174740008, 4.733605338975717, 4.736748503211424, 4.739891667447131, 4.743034831682839, 4.746177995918547, 4.749321160154254, 4.752464324389962, 4.75560748862567, 4.758750652861377, 4.761893817097085, 4.765036981332793, 4.7681801455685004, 4.771323309804208, 4.774466474039916, 4.7776096382756235, 4.780752802511331, 4.783895966747038, 4.7870391309827465, 4.790182295218454, 4.793325459454161, 4.7964686236898695, 4.799611787925577, 4.802754952161284, 4.8058981163969925, 4.8090412806327, 4.812184444868407, 4.8153276091041155, 4.818470773339823, 4.82161393757553, 4.824757101811238, 4.827900266046946, 4.831043430282653, 4.834186594518361, 4.837329758754069, 4.840472922989776, 4.843616087225484, 4.846759251461192, 4.849902415696899, 4.853045579932607, 4.856188744168315, 4.859331908404022, 4.86247507263973, 4.865618236875437, 4.868761401111145, 4.871904565346853, 4.87504772958256, 4.878190893818268, 4.881334058053976, 4.884477222289683, 4.887620386525391, 4.890763550761099, 4.893906714996806, 4.897049879232514, 4.900193043468222, 4.903336207703929, 4.9064793719396365, 4.909622536175345, 4.912765700411052, 4.9159088646467595, 4.919052028882468, 4.922195193118175, 4.9253383573538825, 4.928481521589591, 4.931624685825298, 4.9347678500610055, 4.937911014296713, 4.941054178532421, 4.9441973427681285, 4.947340507003836, 4.950483671239544, 4.9536268354752515, 4.956769999710959, 4.959913163946667, 4.9630563281823745, 4.966199492418082, 4.96934265665379, 4.9724858208894975, 4.975628985125205, 4.978772149360912, 4.9819153135966205, 4.985058477832328, 4.988201642068035, 4.9913448063037436, 4.994487970539451, 4.997631134775158, 5.000774299010867, 5.003917463246574, 5.007060627482281, 5.01020379171799, 5.013346955953697, 5.016490120189404, 5.019633284425112, 5.02277644866082, 5.025919612896527, 5.029062777132235, 5.032205941367943, 5.03534910560365, 5.038492269839358, 5.041635434075066, 5.044778598310773, 5.047921762546481, 5.051064926782189, 5.054208091017896, 5.057351255253604, 5.060494419489311, 5.063637583725019, 5.066780747960727, 5.069923912196434, 5.073067076432142, 5.07621024066785, 5.079353404903557, 5.082496569139265, 5.085639733374973, 5.08878289761068, 5.091926061846388, 5.095069226082096, 5.098212390317803, 5.1013555545535105, 5.104498718789219, 5.107641883024926, 5.1107850472606335, 5.113928211496342, 5.117071375732049, 5.1202145399677566, 5.123357704203465, 5.126500868439172, 5.12964403267488, 5.132787196910588, 5.135930361146295, 5.139073525382003, 5.14221668961771, 5.145359853853418, 5.148503018089126, 5.151646182324833, 5.154789346560541, 5.157932510796249, 5.161075675031956, 5.164218839267664, 5.167362003503372, 5.170505167739079, 5.173648331974787, 5.176791496210495, 5.179934660446202, 5.183077824681909, 5.186220988917618, 5.189364153153325, 5.192507317389032, 5.195650481624741, 5.198793645860448, 5.201936810096155, 5.205079974331864, 5.208223138567571, 5.211366302803278, 5.214509467038987, 5.217652631274694, 5.220795795510401, 5.223938959746109, 5.227082123981817, 5.230225288217524, 5.233368452453232, 5.23651161668894, 5.239654780924647, 5.242797945160355, 5.245941109396063, 5.24908427363177, 5.252227437867478, 5.255370602103186, 5.2585137663388934, 5.261656930574601, 5.264800094810308, 5.2679432590460165, 5.271086423281724, 5.274229587517431, 5.2773727517531395, 5.280515915988847, 5.283659080224554, 5.2868022444602625, 5.28994540869597, 5.293088572931677, 5.2962317371673855, 5.299374901403093, 5.3025180656388, 5.305661229874508, 5.308804394110216, 5.311947558345923, 5.315090722581631, 5.318233886817339, 5.321377051053046, 5.324520215288754, 5.327663379524462, 5.330806543760169, 5.333949707995877, 5.337092872231585, 5.340236036467292, 5.343379200703, 5.346522364938707, 5.349665529174415, 5.352808693410123, 5.35595185764583, 5.359095021881538, 5.362238186117246, 5.365381350352953, 5.368524514588661, 5.371667678824369, 5.374810843060076, 5.377954007295783, 5.381097171531492, 5.384240335767199, 5.3873835000029064, 5.390526664238615, 5.393669828474322, 5.3968129927100295, 5.399956156945738, 5.403099321181445, 5.4062424854171525, 5.409385649652861, 5.412528813888568, 5.4156719781242755, 5.418815142359983, 5.421958306595691, 5.4251014708313985, 5.428244635067106, 5.431387799302814, 5.4345309635385215, 5.437674127774229, 5.440817292009937, 5.4439604562456445, 5.447103620481352, 5.45024678471706, 5.4533899489527675, 5.456533113188475, 5.459676277424182, 5.4628194416598905, 5.465962605895598, 5.469105770131305, 5.4722489343670135, 5.475392098602721, 5.478535262838428, 5.4816784270741366, 5.484821591309844, 5.487964755545551, 5.49110791978126, 5.494251084016967, 5.497394248252674, 5.500537412488382, 5.50368057672409, 5.506823740959797, 5.509966905195505, 5.513110069431213, 5.51625323366692, 5.519396397902628, 5.522539562138336, 5.525682726374043, 5.528825890609751, 5.531969054845459, 5.535112219081166, 5.538255383316874, 5.541398547552581, 5.544541711788289, 5.547684876023997, 5.550828040259704, 5.553971204495412, 5.55711436873112, 5.560257532966827, 5.563400697202535, 5.566543861438243, 5.56968702567395, 5.572830189909658, 5.575973354145366, 5.579116518381073, 5.5822596826167805, 5.585402846852489, 5.588546011088196, 5.5916891753239035, 5.594832339559612, 5.597975503795319, 5.6011186680310265, 5.604261832266735, 5.607404996502442, 5.6105481607381495, 5.613691324973858, 5.616834489209565, 5.619977653445273, 5.62312081768098, 5.626263981916688, 5.629407146152396, 5.632550310388103, 5.635693474623811, 5.638836638859519, 5.641979803095226, 5.645122967330934, 5.648266131566642, 5.651409295802349, 5.654552460038057, 5.657695624273765, 5.660838788509472, 5.663981952745179, 5.667125116980888, 5.670268281216595, 5.673411445452302, 5.676554609688011, 5.679697773923718, 5.682840938159425, 5.685984102395134, 5.689127266630841, 5.692270430866548, 5.695413595102257, 5.698556759337964, 5.701699923573671, 5.704843087809379, 5.707986252045087, 5.711129416280794, 5.714272580516502, 5.71741574475221, 5.720558908987917, 5.723702073223625, 5.726845237459333, 5.72998840169504, 5.733131565930748, 5.736274730166456, 5.739417894402163, 5.742561058637871, 5.745704222873578, 5.7488473871092864, 5.751990551344994, 5.755133715580701, 5.7582768798164095, 5.761420044052117, 5.764563208287824, 5.7677063725235325, 5.77084953675924, 5.773992700994947, 5.7771358652306555, 5.780279029466363, 5.78342219370207, 5.786565357937778, 5.789708522173486, 5.792851686409193, 5.795994850644901, 5.799138014880609, 5.802281179116316, 5.805424343352024, 5.808567507587732, 5.811710671823439, 5.814853836059147, 5.817997000294854, 5.821140164530562, 5.82428332876627, 5.827426493001977, 5.830569657237685, 5.833712821473393, 5.8368559857091, 5.839999149944808, 5.843142314180516, 5.846285478416223, 5.849428642651931, 5.852571806887639, 5.855714971123346, 5.858858135359053, 5.862001299594762, 5.865144463830469, 5.868287628066176, 5.871430792301885, 5.874573956537592, 5.877717120773299, 5.880860285009008, 5.884003449244715, 5.8871466134804225, 5.890289777716131, 5.893432941951838, 5.8965761061875455, 5.899719270423253, 5.902862434658961, 5.9060055988946685, 5.909148763130376, 5.912291927366084, 5.9154350916017915, 5.918578255837499, 5.921721420073207, 5.9248645843089145, 5.928007748544622, 5.93115091278033, 5.9342940770160375, 5.937437241251745, 5.940580405487452, 5.9437235697231605, 5.946866733958868, 5.950009898194575, 5.9531530624302835, 5.956296226665991, 5.959439390901698, 5.9625825551374065, 5.965725719373114, 5.968868883608821, 5.9720120478445295, 5.975155212080237, 5.978298376315944, 5.981441540551652, 5.98458470478736, 5.987727869023067, 5.990871033258775, 5.994014197494483, 5.99715736173019, 6.000300525965898, 6.003443690201606, 6.006586854437313, 6.009730018673021, 6.012873182908729, 6.016016347144436, 6.019159511380144, 6.022302675615851, 6.025445839851559, 6.028589004087267, 6.031732168322974, 6.034875332558682, 6.03801849679439, 6.041161661030097, 6.044304825265805, 6.047447989501513, 6.05059115373722, 6.053734317972928, 6.056877482208636, 6.060020646444343, 6.0631638106800505, 6.066306974915759, 6.069450139151466, 6.0725933033871735, 6.075736467622882, 6.078879631858589, 6.0820227960942965, 6.085165960330005, 6.088309124565712, 6.0914522888014195, 6.094595453037128, 6.097738617272835, 6.1008817815085425, 6.10402494574425, 6.107168109979958, 6.1103112742156656, 6.113454438451373, 6.116597602687081, 6.119740766922789, 6.122883931158496, 6.126027095394204, 6.129170259629912, 6.132313423865619, 6.135456588101327, 6.138599752337035, 6.141742916572742, 6.144886080808449, 6.148029245044158, 6.151172409279865, 6.154315573515572, 6.157458737751281, 6.160601901986988, 6.163745066222695, 6.166888230458404, 6.170031394694111, 6.173174558929818, 6.176317723165527, 6.179460887401234, 6.182604051636941, 6.185747215872649, 6.188890380108357, 6.192033544344064, 6.195176708579772, 6.19831987281548, 6.201463037051187, 6.204606201286895, 6.207749365522603, 6.21089252975831, 6.214035693994018, 6.217178858229726, 6.220322022465433, 6.223465186701141, 6.226608350936848, 6.229751515172556, 6.232894679408264, 6.236037843643971, 6.239181007879679, 6.242324172115387, 6.245467336351094, 6.2486105005868025, 6.25175366482251, 6.254896829058217, 6.258039993293925, 6.261183157529633, 6.26432632176534, 6.267469486001048, 6.270612650236756, 6.273755814472463, 6.276898978708171, 6.280042142943879, 6.283185307179586]}, \"id\": \"48862641-4c9a-498e-950f-0d5f40a4679d\"};\n", " ds.set(data);\n", " " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from IPython.html.widgets import interact\n", "@interact(f=[\"sin\", \"cos\", \"tan\"], w=(0,100), A=(1,10), phi=(0, 10, 0.1))\n", "def update(f, w=1, A=1, phi=0):\n", " if f == \"sin\": func = np.sin\n", " elif f == \"cos\": func = np.cos\n", " elif f == \"tan\": func = np.tan\n", " source.data['y'] = A * func(w * x + phi)\n", " source.push_notebook()\n" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "
\n", "\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "show(p)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "\n", "## [bokeh.charts](http://bokeh.pydata.org/docs/user_guide/charts.html)\n", "Common Schemas for common tasks (and parameters).\n", "\n", "Expects data to be formatted as either an OrderedDict or a pandas dataframe.\n", "\n", "Supported Schemas: Bar, Boxplot, Categorical Heatmap, Histogram, Scatter, Timeseries" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "
\n", "\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from collections import OrderedDict\n", "from bokeh.charts import Histogram\n", "\n", "mu, sigma = 0, 0.5\n", "normal_dist = OrderedDict(normal=np.random.normal(mu, sigma, size=1000))\n", "hist = Histogram(normal_dist, bins=50,\n", " title=\"kwargs, dict_input\", \n", " ylabel=\"frequency\", \n", " legend=\"top_left\",\n", " width=400, \n", " height=350, \n", " notebook=True)\n", "hist.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "\n", "# Baseball App Example\n", "\n", "In this example we use Blaze and Bokeh to explore the Lahman Baseball Statistics database.\n", "\n" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ " \n", " \n", " \n", " \n", "
\n", " \n", " BokehJS successfully loaded.\n", "
\n", "

Warning: BokehJS previously loaded

" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import blaze as bz\n", "import pandas as pd\n", "import numpy as np\n", "from odo import odo\n", "from bokeh.plotting import *\n", "output_notebook()" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "dshape(\"\"\"{\n", " AllstarFull: var * {\n", " playerID: ?string,\n", " yearID: ?int32,\n", " gameNum: ?int32,\n", " gameID: ?string,\n", " teamID: ?string,\n", " lgID: ?string,\n", " GP: ?int32,\n", " startingPos: ?int32\n", " },\n", " Appearances: var * {\n", " yearID: ?int32,\n", " teamID: ?string,\n", " lgID: ?string,\n", " playerID: ?string,\n", " G_all: ?int32,\n", " GS: ?int32,\n", " G_batting: ?int32,\n", " G_defense: ?int32,\n", " G_p: ?int32,\n", " G_c: ?int32,\n", " G_1b: ?int32,\n", " G_2b: ?int32,\n", " G_3b: ?int32,\n", " G_ss: ?int32,\n", " G_lf: ?int32,\n", " G_cf: ?int32,\n", " G_rf: ?int32,\n", " G_of: ?int32,\n", " G_dh: ?int32,\n", " G_ph: ?int32,\n", " G_pr: ?int32\n", " },\n", " AwardsManagers: var * {\n", " playerID: ?string,\n", " awardID: ?string,\n", " yearID: ?int32,\n", " lgID: ?string,\n", " tie: ?string,\n", " notes: ?string\n", " },\n", " AwardsPlayers: var * {\n", " playerID: ?string,\n", " awardID: ?string,\n", " yearID: ?int32,\n", " lgID: ?string,\n", " tie: ?string,\n", " notes: ?string\n", " },\n", " AwardsShareManagers: var * {\n", " awardID: ?string,\n", " yearID: ?int32,\n", " lgID: ?string,\n", " playerID: ?string,\n", " pointsWon: ?int32,\n", " pointsMax: ?int32,\n", " votesFirst: ?int32\n", " },\n", " AwardsSharePlayers: var * {\n", " awardID: ?string,\n", " yearID: ?int32,\n", " lgID: ?string,\n", " playerID: ?string,\n", " pointsWon: ?float64,\n", " pointsMax: ?int32,\n", " votesFirst: ?float64\n", " },\n", " Batting: var * {\n", " playerID: ?string,\n", " yearID: ?int32,\n", " stint: ?int32,\n", " teamID: ?string,\n", " lgID: ?string,\n", " G: ?int32,\n", " G_batting: ?int32,\n", " AB: ?int32,\n", " R: ?int32,\n", " H: ?int32,\n", " 2B: ?int32,\n", " 3B: ?int32,\n", " HR: ?int32,\n", " RBI: ?int32,\n", " SB: ?int32,\n", " CS: ?int32,\n", " BB: ?int32,\n", " SO: ?int32,\n", " IBB: ?int32,\n", " HBP: ?int32,\n", " SH: ?int32,\n", " SF: ?int32,\n", " GIDP: ?int32,\n", " G_old: ?int32\n", " },\n", " BattingPost: var * {\n", " yearID: ?int32,\n", " round: ?string,\n", " playerID: ?string,\n", " teamID: ?string,\n", " lgID: ?string,\n", " G: ?int32,\n", " AB: ?int32,\n", " R: ?int32,\n", " H: ?int32,\n", " 2B: ?int32,\n", " 3B: ?int32,\n", " HR: ?int32,\n", " RBI: ?int32,\n", " SB: ?int32,\n", " CS: ?int32,\n", " BB: ?int32,\n", " SO: ?int32,\n", " IBB: ?int32,\n", " HBP: ?int32,\n", " SH: ?int32,\n", " SF: ?int32,\n", " GIDP: ?int32\n", " },\n", " Fielding: var * {\n", " playerID: ?string,\n", " yearID: ?int32,\n", " stint: ?int32,\n", " teamID: ?string,\n", " lgID: ?string,\n", " POS: ?string,\n", " G: ?int32,\n", " GS: ?int32,\n", " InnOuts: ?int32,\n", " PO: ?int32,\n", " A: ?int32,\n", " E: ?int32,\n", " DP: ?int32,\n", " PB: ?int32,\n", " WP: ?int32,\n", " SB: ?int32,\n", " CS: ?int32,\n", " ZR: ?float64\n", " },\n", " FieldingOF: var * {\n", " playerID: ?string,\n", " yearID: ?int32,\n", " stint: ?int32,\n", " Glf: ?int32,\n", " Gcf: ?int32,\n", " Grf: ?int32\n", " },\n", " FieldingPost: var * {\n", " playerID: ?string,\n", " yearID: ?int32,\n", " teamID: ?string,\n", " lgID: ?string,\n", " round: ?string,\n", " POS: ?string,\n", " G: ?int32,\n", " GS: ?int32,\n", " InnOuts: ?int32,\n", " PO: ?int32,\n", " A: ?int32,\n", " E: ?int32,\n", " DP: ?int32,\n", " TP: ?int32,\n", " PB: ?int32,\n", " SB: ?int32,\n", " CS: ?int32\n", " },\n", " HallOfFame: var * {\n", " playerID: ?string,\n", " yearid: ?int32,\n", " votedBy: ?string,\n", " ballots: ?int32,\n", " needed: ?int32,\n", " votes: ?int32,\n", " inducted: ?string,\n", " category: ?string,\n", " needed_note: ?string\n", " },\n", " Managers: var * {\n", " playerID: ?string,\n", " yearID: ?int32,\n", " teamID: ?string,\n", " lgID: ?string,\n", " inseason: ?int32,\n", " G: ?int32,\n", " W: ?int32,\n", " L: ?int32,\n", " rank: ?int32,\n", " plyrMgr: ?string\n", " },\n", " ManagersHalf: var * {\n", " playerID: ?string,\n", " yearID: ?int32,\n", " teamID: ?string,\n", " lgID: ?string,\n", " inseason: ?int32,\n", " half: ?int32,\n", " G: ?int32,\n", " W: ?int32,\n", " L: ?int32,\n", " rank: ?int32\n", " },\n", " Master: var * {\n", " playerID: ?string,\n", " birthYear: ?int32,\n", " birthMonth: ?int32,\n", " birthDay: ?int32,\n", " birthCountry: ?string,\n", " birthState: ?string,\n", " birthCity: ?string,\n", " deathYear: ?int32,\n", " deathMonth: ?int32,\n", " deathDay: ?int32,\n", " deathCountry: ?string,\n", " deathState: ?string,\n", " deathCity: ?string,\n", " nameFirst: ?string,\n", " nameLast: ?string,\n", " nameGiven: ?string,\n", " weight: ?int32,\n", " height: ?float64,\n", " bats: ?string,\n", " throws: ?string,\n", " debut: ?float64,\n", " finalGame: ?float64,\n", " retroID: ?string,\n", " bbrefID: ?string\n", " },\n", " Pitching: var * {\n", " playerID: ?string,\n", " yearID: ?int32,\n", " stint: ?int32,\n", " teamID: ?string,\n", " lgID: ?string,\n", " W: ?int32,\n", " L: ?int32,\n", " G: ?int32,\n", " GS: ?int32,\n", " CG: ?int32,\n", " SHO: ?int32,\n", " SV: ?int32,\n", " IPouts: ?int32,\n", " H: ?int32,\n", " ER: ?int32,\n", " HR: ?int32,\n", " BB: ?int32,\n", " SO: ?int32,\n", " BAOpp: ?float64,\n", " ERA: ?float64,\n", " IBB: ?int32,\n", " WP: ?int32,\n", " HBP: ?int32,\n", " BK: ?int32,\n", " BFP: ?int32,\n", " GF: ?int32,\n", " R: ?int32,\n", " SH: ?int32,\n", " SF: ?int32,\n", " GIDP: ?int32\n", " },\n", " PitchingPost: var * {\n", " playerID: ?string,\n", " yearID: ?int32,\n", " round: ?string,\n", " teamID: ?string,\n", " lgID: ?string,\n", " W: ?int32,\n", " L: ?int32,\n", " G: ?int32,\n", " GS: ?int32,\n", " CG: ?int32,\n", " SHO: ?int32,\n", " SV: ?int32,\n", " IPouts: ?int32,\n", " H: ?int32,\n", " ER: ?int32,\n", " HR: ?int32,\n", " BB: ?int32,\n", " SO: ?int32,\n", " BAOpp: ?float64,\n", " ERA: ?float64,\n", " IBB: ?int32,\n", " WP: ?int32,\n", " HBP: ?int32,\n", " BK: ?int32,\n", " BFP: ?int32,\n", " GF: ?int32,\n", " R: ?int32,\n", " SH: ?int32,\n", " SF: ?int32,\n", " GIDP: ?int32\n", " },\n", " Salaries: var * {\n", " yearID: ?int32,\n", " teamID: ?string,\n", " lgID: ?string,\n", " playerID: ?string,\n", " salary: ?float64\n", " },\n", " Schools: var * {\n", " schoolID: ?string,\n", " schoolName: ?string,\n", " schoolCity: ?string,\n", " schoolState: ?string,\n", " schoolNick: ?string\n", " },\n", " SchoolsPlayers: var * {\n", " playerID: ?string,\n", " schoolID: ?string,\n", " yearMin: ?int32,\n", " yearMax: ?int32\n", " },\n", " SeriesPost: var * {\n", " yearID: ?int32,\n", " round: ?string,\n", " teamIDwinner: ?string,\n", " lgIDwinner: ?string,\n", " teamIDloser: ?string,\n", " lgIDloser: ?string,\n", " wins: ?int32,\n", " losses: ?int32,\n", " ties: ?int32\n", " },\n", " Teams: var * {\n", " yearID: ?int32,\n", " lgID: ?string,\n", " teamID: ?string,\n", " franchID: ?string,\n", " divID: ?string,\n", " Rank: ?int32,\n", " G: ?int32,\n", " Ghome: ?int32,\n", " W: ?int32,\n", " L: ?int32,\n", " DivWin: ?string,\n", " WCWin: ?string,\n", " LgWin: ?string,\n", " WSWin: ?string,\n", " R: ?int32,\n", " AB: ?int32,\n", " H: ?int32,\n", " 2B: ?int32,\n", " 3B: ?int32,\n", " HR: ?int32,\n", " BB: ?int32,\n", " SO: ?int32,\n", " SB: ?int32,\n", " CS: ?int32,\n", " HBP: ?int32,\n", " SF: ?int32,\n", " RA: ?int32,\n", " ER: ?int32,\n", " ERA: ?float64,\n", " CG: ?int32,\n", " SHO: ?int32,\n", " SV: ?int32,\n", " IPouts: ?int32,\n", " HA: ?int32,\n", " HRA: ?int32,\n", " BBA: ?int32,\n", " SOA: ?int32,\n", " E: ?int32,\n", " DP: ?int32,\n", " FP: ?float64,\n", " name: ?string,\n", " park: ?string,\n", " attendance: ?int32,\n", " BPF: ?int32,\n", " PPF: ?int32,\n", " teamIDBR: ?string,\n", " teamIDlahman45: ?string,\n", " teamIDretro: ?string\n", " },\n", " TeamsFranchises: var * {\n", " franchID: ?string,\n", " franchName: ?string,\n", " active: ?string,\n", " NAassoc: ?string\n", " },\n", " TeamsHalf: var * {\n", " yearID: ?int32,\n", " lgID: ?string,\n", " teamID: ?string,\n", " Half: ?string,\n", " divID: ?string,\n", " DivWin: ?string,\n", " Rank: ?int32,\n", " G: ?int32,\n", " W: ?int32,\n", " L: ?int32\n", " },\n", " temp: var * {ID: ?int32, namefull: ?string, born: ?float64}\n", " }\"\"\")" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "db = bz.Data('sqlite:///lahman2013.sqlite')\n", "db.dshape" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[u'ATL',\n", " u'BAL',\n", " u'BOS',\n", " u'CAL',\n", " u'CHA',\n", " u'CHN',\n", " u'CIN',\n", " u'CLE',\n", " u'DET',\n", " u'HOU',\n", " u'KCA',\n", " u'LAN',\n", " u'MIN',\n", " u'ML4',\n", " u'MON',\n", " u'NYA',\n", " u'NYN',\n", " u'OAK',\n", " u'PHI',\n", " u'PIT',\n", " u'SDN',\n", " u'SEA',\n", " u'SFN',\n", " u'SLN',\n", " u'TEX',\n", " u'TOR',\n", " u'COL',\n", " u'FLO',\n", " u'ANA',\n", " u'ARI',\n", " u'MIL',\n", " u'TBA',\n", " u'LAA',\n", " u'WAS',\n", " u'MIA']" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "list(db.Salaries.teamID.distinct())" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
0
0ATL
1BAL
2BOS
3CAL
4CHA
5CHN
6CIN
7CLE
8DET
9HOU
10KCA
11LAN
12MIN
13ML4
14MON
15NYA
16NYN
17OAK
18PHI
19PIT
20SDN
21SEA
22SFN
23SLN
24TEX
25TOR
26COL
27FLO
28ANA
29ARI
30MIL
31TBA
32LAA
33WAS
34MIA
\n", "
" ], "text/plain": [ " 0\n", "0 ATL\n", "1 BAL\n", "2 BOS\n", "3 CAL\n", "4 CHA\n", "5 CHN\n", "6 CIN\n", "7 CLE\n", "8 DET\n", "9 HOU\n", "10 KCA\n", "11 LAN\n", "12 MIN\n", "13 ML4\n", "14 MON\n", "15 NYA\n", "16 NYN\n", "17 OAK\n", "18 PHI\n", "19 PIT\n", "20 SDN\n", "21 SEA\n", "22 SFN\n", "23 SLN\n", "24 TEX\n", "25 TOR\n", "26 COL\n", "27 FLO\n", "28 ANA\n", "29 ARI\n", "30 MIL\n", "31 TBA\n", "32 LAA\n", "33 WAS\n", "34 MIA" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "r = bz.compute(db.Salaries[\"teamID\"].distinct())\n", "odo(r, pd.DataFrame)" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "collapsed": false }, "outputs": [], "source": [ "result = bz.by(db.Salaries.teamID, avg=db.Salaries.salary.mean(), \n", " max=db.Salaries.salary.max(), \n", " ratio=db.Salaries.salary.max() / db.Salaries.salary.min()\n", " ).sort('ratio', ascending=False)\n", "df = odo(result, pd.DataFrame)" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
teamIDavgmaxratio
0PHI2092230.93263625000000416.666667
1LAN2346982.69802623854494397.574900
2NYN2317349.97724623145011385.750183
3DET1980834.99020823000000383.333333
4MIN1525031.65038623000000383.333333
\n", "
" ], "text/plain": [ " teamID avg max ratio\n", "0 PHI 2092230.932636 25000000 416.666667\n", "1 LAN 2346982.698026 23854494 397.574900\n", "2 NYN 2317349.977246 23145011 385.750183\n", "3 DET 1980834.990208 23000000 383.333333\n", "4 MIN 1525031.650386 23000000 383.333333" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.head()" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "
\n", "\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "df = df.sort('avg')\n", "source = ColumnDataSource(df)\n", "p = figure(x_range=list(df[\"teamID\"]))\n", "p.scatter(x=\"teamID\", y=\"avg\", source=source)\n", "show(p)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Hmm, can't read the y axis very well..." ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "
\n", "\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "df = df.sort('avg')\n", "source = ColumnDataSource(df)\n", "p = figure(x_range=list(df[\"teamID\"]))\n", "p.scatter(x=\"teamID\", y=\"avg\", source=source)\n", "p.xaxis.major_label_orientation = np.pi/3\n", "\n", "show(p)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's view a max versus ratio" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "
\n", "\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "TOOLS = \"pan,wheel_zoom,box_zoom,reset,save,lasso_select\"\n", "\n", "df = df.sort('avg')\n", "source = ColumnDataSource(df)\n", "s1 = figure(title=\"Pay Avg\",x_range=source.data[\"teamID\"], tools=TOOLS, width=500)\n", "s1.scatter(x=\"teamID\", y=\"avg\", source=source)\n", "s1.xaxis.major_label_orientation = np.pi/3\n", "\n", "s2 = figure(title=\"Pay Ratio\", x_range=s1.x_range, tools=TOOLS, width=500)\n", "s2.scatter(x=\"teamID\", y=\"ratio\", source=source)\n", "s2.xaxis.major_label_orientation = np.pi/3\n", "\n", "p = gridplot([[s1, s2]])\n", "show(p)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "\n", "Now let's join on the AllStars table to see how max salaries and all star count correlate." ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "max number of all stars from a single team: 412\n", "normalized list of all_stars:\n", "0 1.000000\n", "1 0.737864\n", "2 0.691748\n", "3 0.623786\n", "4 0.570388\n", "5 0.565534\n", "6 0.512136\n", "7 0.492718\n", "8 0.458738\n", "9 0.453883\n", "Name: all_stars, dtype: float64\n" ] } ], "source": [ "result = bz.by(db.AllstarFull.teamID, all_stars=db.AllstarFull.playerID.count()\n", " ).sort('all_stars', ascending=False)\n", "r = bz.Data(odo(result, pd.DataFrame))\n", "m = odo(r, pd.DataFrame)[\"all_stars\"].max()\n", "print \"max number of all stars from a single team:\", m\n", "\n", "print \"normalized list of all_stars:\\n\", bz.compute((r.all_stars / m).head())\n", "\n", "# Now let's use this as the size of the circles in the scatter plot\n", "df1 = odo(r, pd.DataFrame)\n", "df1['all_stars'] /= (df1['all_stars'].max() / 10)\n", "df1['all_stars'] += 10" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "\n", "Now lets join the data to all_star sizes" ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
teamIDall_starsavgmaxratio
0NYA20.0487803608860.14853833000000NaN
1SLN17.4146341928832.55477916333327272.222117
2BOS16.9512202692113.85680822500000375.000000
3CIN16.2682931568035.28132418910655315.177583
4CLE15.7317071525794.95847815000000250.000000
5DET15.6829271980834.99020823000000383.333333
6CHN15.1463412185518.65408019000000316.666667
7CHA14.9512201992653.50123217000000340.000000
8PIT14.6097561077989.68037616500000NaN
9PHI14.5609762092230.93263625000000416.666667
" ], "text/plain": [ " teamID all_stars avg max ratio\n", "0 NYA 20.048780 3608860.148538 33000000 NaN\n", "1 SLN 17.414634 1928832.554779 16333327 272.222117\n", "2 BOS 16.951220 2692113.856808 22500000 375.000000\n", "3 CIN 16.268293 1568035.281324 18910655 315.177583\n", "4 CLE 15.731707 1525794.958478 15000000 250.000000\n", "5 DET 15.682927 1980834.990208 23000000 383.333333\n", "6 CHN 15.146341 2185518.654080 19000000 316.666667\n", "7 CHA 14.951220 1992653.501232 17000000 340.000000\n", "8 PIT 14.609756 1077989.680376 16500000 NaN\n", "9 PHI 14.560976 2092230.932636 25000000 416.666667" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "r = bz.join(bz.Data(df1), bz.Data(df), 'teamID')\n", "r.head()" ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " teamID all_stars avg max ratio\n", "24 CAL 11.634146 739073.179348 5375000 89.583333\n", "25 ML4 11.170732 613243.580052 5875000 97.916667\n", "31 TBA 10.707317 1528399.505495 10125000 59.558824\n", "23 MON 11.707317 707458.857886 11500000 191.666667\n", "19 KCA 12.024390 1299025.786808 13000000 216.666667\n" ] }, { "data": { "text/html": [ "\n", "
\n", "\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "df_j = odo(r, pd.DataFrame)\n", "df_j = df_j.sort(\"max\")\n", "print df_j.head()\n", "source = odo(df_j, ColumnDataSource)\n", "p = figure(x_range=list(df_j[\"teamID\"]))\n", "p.scatter(x=\"teamID\", y=\"max\", size=\"all_stars\", source=source, fill_alpha=0.5, )\n", "p.xaxis.major_label_orientation = np.pi/3\n", "\n", "show(p)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "\n", "Now let's make this an interactive plot!" ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "collapsed": false }, "outputs": [], "source": [ "def compute_df(year=2012):\n", " result = db.Salaries[ db.Salaries.yearID==year ]\n", " result = bz.Data(odo(result, pd.DataFrame))\n", " result = bz.by(result.teamID, max=result.salary.max()).sort('max', ascending=False)\n", " df = odo(result, pd.DataFrame)\n", " asf_year = db.AllstarFull[ db.AllstarFull.yearID==year]\n", " result = bz.by(asf_year.teamID, all_stars=db.AllstarFull.playerID.count()\n", " ).sort('all_stars', ascending=False)\n", " r = bz.Data(odo(result, pd.DataFrame))\n", " df1 = odo(r, pd.DataFrame)\n", " df1['all_stars'] /= (df1['all_stars'].max() / 10)\n", " df1['all_stars'] += 10\n", " r = bz.join(bz.Data(df1), bz.Data(df), 'teamID')\n", " df_j = odo(r, pd.DataFrame)\n", " df_j = df_j.sort(\"max\")\n", " return df_j\n", "\n", "source = odo(compute_df(), ColumnDataSource)\n", "\n", "p = figure(x_range=list(source.data[\"teamID\"]))\n", "p.scatter(x=\"teamID\", y=\"max\", size=\"all_stars\", source=source, fill_alpha=0.5, )\n", "p.xaxis.major_label_orientation = np.pi/3" ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "collapsed": false }, "outputs": [ { "data": { "application/javascript": [ "\n", " var ds = Bokeh.Collections('ColumnDataSource').get('8903f0d7-924c-45ac-861b-f92dc6f22562');\n", " var data = {\"column_names\": [\"max\", \"teamID\", \"all_stars\"], \"tags\": [], \"selected\": [], \"data\": {\"max\": [3000000.0, 8700000.0, 9500000.0, 9831954.0, 10000000.0, 10192071.0, 11000000.0, 11000000.0, 11000000.0, 11500000.0, 13000000.0, 13146942.0, 14000000.0, 15350000.0, 15950000.0, 16000000.0, 16157271.0, 16272110.0, 16500000.0, 16571429.0, 17400000.0, 18910655.0, 19000000.0, 20557143.0, 21857143.0, 22250000.0, 23000000.0, 23000000.0, 25000000.0, 29000000.0], \"teamID\": [\"SDN\", \"ARI\", \"TBA\", \"KCA\", \"OAK\", \"COL\", \"LAN\", \"BAL\", \"CIN\", \"MIL\", \"WAS\", \"TOR\", \"ATL\", \"CLE\", \"TEX\", \"SLN\", \"PIT\", \"CHA\", \"MIA\", \"CHN\", \"HOU\", \"SFN\", \"SEA\", \"PHI\", \"BOS\", \"MIN\", \"DET\", \"NYN\", \"LAA\", \"NYA\"], \"all_stars\": [12.390243902439025, 12.585365853658537, 11.975609756097562, 10.707317073170731, 10.804878048780488, 12.75609756097561, 10.829268292682928, 10.951219512195122, 15.73170731707317, 10.048780487804878, 12.024390243902438, 13.268292682926829, 11.951219512195122, 14.121951219512194, 16.951219512195124, 12.390243902439025, 14.951219512195122, 17.414634146341463, 14.609756097560975, 10.341463414634147, 10.829268292682928, 16.26829268292683, 15.146341463414634, 11.829268292682928, 14.24390243902439, 13.75609756097561, 12.975609756097562, 15.682926829268293, 14.560975609756097, 20.048780487804876]}, \"id\": \"8903f0d7-924c-45ac-861b-f92dc6f22562\"};\n", " ds.set(data);\n", " " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from IPython.html.widgets import interact, IntSliderWidget\n", "\n", "def update(year):\n", " df = compute_df(year)\n", " source.data['all_stars'] = df['all_stars']\n", " source.data['max'] = df['max']\n", " source.push_notebook()\n", "#interact(update, year=(1980, 2013))\n", "interact(update, year=IntSliderWidget(min=1985, max=2013, value=2013))" ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "
\n", "\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "show(p)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [] } ], "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 }