Skip to content

Instantly share code, notes, and snippets.

@psychemedia
Last active October 26, 2017 18:26
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save psychemedia/167e8df24238134f439dc077b5dfcb51 to your computer and use it in GitHub Desktop.
Save psychemedia/167e8df24238134f439dc077b5dfcb51 to your computer and use it in GitHub Desktop.
notebook demo
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"# Creating Interactive Teaching Narratives Using Jupyter Notebooks\n",
"\n",
"*Tony Hirst*\n",
"\n",
"`@psychemedia`"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## A Jupyter notebook is:"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"- an interactive enviroMNent accessed via a browser"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"- that can be served on your own computer or over the web"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"- that can display rich text- like $\\sqrt{3x-1}+(1+x)^2$ - inline, as well as `inline code` fragments"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"- embed images, videos, audio players, etc"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Notebooks can be used as calculators"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"slideshow": {
"slide_type": "-"
}
},
"outputs": [],
"source": [
"#Do some sums\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Notebooks can be used to work with data"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"- load data in from CSV or Excel files, web locations, or create directly"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"source": [
"%matplotlib inline\n",
"import matplotlib.pyplot as plt\n",
"import numpy as np"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"array([ 0. , 0.02, 0.04, 0.06, 0.08, 0.1 , 0.12, 0.14, 0.16,\n",
" 0.18, 0.2 , 0.22, 0.24, 0.26, 0.28, 0.3 , 0.32, 0.34,\n",
" 0.36, 0.38, 0.4 , 0.42, 0.44, 0.46, 0.48, 0.5 , 0.52,\n",
" 0.54, 0.56, 0.58, 0.6 , 0.62, 0.64, 0.66, 0.68, 0.7 ,\n",
" 0.72, 0.74, 0.76, 0.78, 0.8 , 0.82, 0.84, 0.86, 0.88,\n",
" 0.9 , 0.92, 0.94, 0.96, 0.98])"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#Define a variable\n",
"frequency=1\n",
"\n",
"#Define a list of numbers\n",
"# in the range 0..1 with step size 0.2\n",
"timestamps=np.arange(0.0,1.0,0.02)\n",
"\n",
"timestamps"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Notebooks can plot charts"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {
"slideshow": {
"slide_type": "-"
}
},
"outputs": [
{
"data": {
"image/png": "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\nGKlyYbx/9gCvA4nAQ2Zmhd7fC7gCb0mVMeG/CglSGD/D/udvR5pZ78I7zKwPMBJvAenvwhe9RBsz\ni/fvn8MK15fnPqy0GLX4eHTzb65peN2XPgOWAEfirZuxHBhUeG0Vv1sTzjkr0s4hfjud8f5w/YA3\nSHgE3tioQf6NK9VIOO4fMzseb4B5DN64hHXFnGqHc+6ZSroMCUi4/v6U0PYVaPHxai2Mn1/1gclA\nH2Am3rpQzYBz8Lpd3uSce7ayr0eqXhjvoTeA3+E9jfsUWIP3Jf03QC3gGefczZV8OVLF/DkAfuMX\nmwOn4s10mp/ob3XO3ea/tx3eE/81zrl2Rdop031YWZTUVQNm1hp4EG/6+EPwVq//FHjAObe9yHtL\n/FJlZo2A+/Bu8EOBbcAE4F7nXGplXoMEp6L3T6Ev3wfyqz+CUj2E6+9PMe1egZK6ai+Mn191gf/D\nW0+sLd6Qgh+AvzvnvqnMa5BgheMe8p/wXo73ZPdwoB6Qjtft+zXnnGa/rIbM7H68770lCX13OVBS\n5+8v9X1YWZTUiYiIiIiIRDGNqRMREREREYliSupERERERESimJI6ERERERGRKKakTkREREREJIop\nqRMREREREYliSupERERERESimJI6ERERERGRKKakTkREREREJIopqRMREREREYliSupERERERESi\nmJI6ERERERGRKKakTkREREREJIopqRMREREREYliSupERERERESimJI6ERERERGRKKakTkRERERE\nJIopqRMREREREYli/w/wRCRVlxPUVwAAAABJRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7fb4fe4b9c88>"
]
},
"metadata": {
"image/png": {
"height": 255,
"width": 442
}
},
"output_type": "display_data"
}
],
"source": [
"plt.plot(timestamps,np.sin(2*np.pi*timestamps*frequency));"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"source": [
"frequency=5"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Notebooks Can Be Used to Create Simple Interactives"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"code_folding": [],
"slideshow": {
"slide_type": "-"
}
},
"outputs": [],
"source": [
"from ipywidgets import interact\n",
"\n",
"def pltsin(f):\n",
" plt.plot(timestamps,np.sin(2*np.pi*timestamps*f))"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"slideshow": {
"slide_type": "-"
}
},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "fa77f69f4d3f431a9fb969e8f469d363",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"A Jupyter Widget"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"interact(pltsin,f=(0,10,1));"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Notebooks can embed maps"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"code_folding": []
},
"outputs": [],
"source": [
"import folium\n",
"mymap = folium.Map(location=[52.0236, -0.7088], zoom_start=15,\n",
" width=600, height=300, tiles='Stamen Terrain')"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"scrolled": true,
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/html": [
"<div style=\"width:100%;\"><div style=\"position:relative;width:100%;height:0;padding-bottom:60%;\"><iframe src=\"data:text/html;charset=utf-8;base64,PCFET0NUWVBFIGh0bWw+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgPHNjcmlwdD5MX1BSRUZFUl9DQU5WQVMgPSBmYWxzZTsgTF9OT19UT1VDSCA9IGZhbHNlOyBMX0RJU0FCTEVfM0QgPSBmYWxzZTs8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjExLjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmNzcyIgLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC5taW4uY3NzIiAvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLXRoZW1lLm1pbi5jc3MiIC8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNi4zL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIgLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuY3NzIiAvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL3Jhd2dpdC5jb20vcHl0aG9uLXZpc3VhbGl6YXRpb24vZm9saXVtL21hc3Rlci9mb2xpdW0vdGVtcGxhdGVzL2xlYWZsZXQuYXdlc29tZS5yb3RhdGUuY3NzIiAvPgogICAgPHN0eWxlPmh0bWwsIGJvZHkge3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTttYXJnaW46IDA7cGFkZGluZzogMDt9PC9zdHlsZT4KICAgIDxzdHlsZT4jbWFwIHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtyaWdodDowO2xlZnQ6MDt9PC9zdHlsZT4KICAgIAogICAgICAgICAgICA8c3R5bGU+ICNtYXBfNWUzZjU5MmQwODU2NDhhMzgzNmUyN2E2NDFkOTBlMTEgewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogNjAwLjBweDsKICAgICAgICAgICAgICAgIGhlaWdodDogMzAwLjBweDsKICAgICAgICAgICAgICAgIGxlZnQ6IDAuMCU7CiAgICAgICAgICAgICAgICB0b3A6IDAuMCU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIDwvc3R5bGU+CiAgICAgICAgCjwvaGVhZD4KPGJvZHk+ICAgIAogICAgCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvbGl1bS1tYXAiIGlkPSJtYXBfNWUzZjU5MmQwODU2NDhhMzgzNmUyN2E2NDFkOTBlMTEiID48L2Rpdj4KICAgICAgICAKPC9ib2R5Pgo8c2NyaXB0PiAgICAKICAgIAoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgYm91bmRzID0gbnVsbDsKICAgICAgICAgICAgCgogICAgICAgICAgICB2YXIgbWFwXzVlM2Y1OTJkMDg1NjQ4YTM4MzZlMjdhNjQxZDkwZTExID0gTC5tYXAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWFwXzVlM2Y1OTJkMDg1NjQ4YTM4MzZlMjdhNjQxZDkwZTExJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtjZW50ZXI6IFs1Mi4wMjM2LC0wLjcwODhdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgem9vbTogMTUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhCb3VuZHM6IGJvdW5kcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyczogW10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3JsZENvcHlKdW1wOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyczogTC5DUlMuRVBTRzM4NTcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciB0aWxlX2xheWVyXzM1ZDUyYzY0NGJhNjQ4M2FhNjU1OGNmNGY1ZjA1NWE5ID0gTC50aWxlTGF5ZXIoCiAgICAgICAgICAgICAgICAnaHR0cHM6Ly9zdGFtZW4tdGlsZXMte3N9LmEuc3NsLmZhc3RseS5uZXQvdGVycmFpbi97en0ve3h9L3t5fS5qcGcnLAogICAgICAgICAgICAgICAgewogICJhdHRyaWJ1dGlvbiI6IG51bGwsCiAgImRldGVjdFJldGluYSI6IGZhbHNlLAogICJtYXhab29tIjogMTgsCiAgIm1pblpvb20iOiAxLAogICJub1dyYXAiOiBmYWxzZSwKICAic3ViZG9tYWlucyI6ICJhYmMiCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzVlM2Y1OTJkMDg1NjQ4YTM4MzZlMjdhNjQxZDkwZTExKTsKICAgICAgICAKPC9zY3JpcHQ+\" style=\"position:absolute;width:100%;height:100%;left:0;top:0;border:none !important;\" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe></div></div>"
],
"text/plain": [
"<folium.folium.Map at 0x7fb51461d668>"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#Add two markers to the map\n",
"#folium.Marker([52.0239, -0.7072], popup='OU Library').add_to(mymap)\n",
"#folium.Marker([52.0242, -0.7112], popup='Jennie Lee Building').add_to(mymap)\n",
"\n",
"mymap"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Notebooks Can Call Arbitrary Webservices"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"slideshow": {
"slide_type": "-"
}
},
"outputs": [
{
"data": {
"text/html": [
"<div style=\"width:100%;\"><div style=\"position:relative;width:100%;height:0;padding-bottom:60%;\"><iframe src=\"data:text/html;charset=utf-8;base64,PCFET0NUWVBFIGh0bWw+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgPHNjcmlwdD5MX1BSRUZFUl9DQU5WQVMgPSBmYWxzZTsgTF9OT19UT1VDSCA9IGZhbHNlOyBMX0RJU0FCTEVfM0QgPSBmYWxzZTs8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjExLjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmNzcyIgLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC5taW4uY3NzIiAvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLXRoZW1lLm1pbi5jc3MiIC8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNi4zL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIgLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuY3NzIiAvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL3Jhd2dpdC5jb20vcHl0aG9uLXZpc3VhbGl6YXRpb24vZm9saXVtL21hc3Rlci9mb2xpdW0vdGVtcGxhdGVzL2xlYWZsZXQuYXdlc29tZS5yb3RhdGUuY3NzIiAvPgogICAgPHN0eWxlPmh0bWwsIGJvZHkge3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTttYXJnaW46IDA7cGFkZGluZzogMDt9PC9zdHlsZT4KICAgIDxzdHlsZT4jbWFwIHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtyaWdodDowO2xlZnQ6MDt9PC9zdHlsZT4KICAgIAogICAgICAgICAgICA8c3R5bGU+ICNtYXBfZjY2NDA3NDg5ZGE2NDcyNDk5MGI0MDg5NDMyY2U3MDggewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogNjAwLjBweDsKICAgICAgICAgICAgICAgIGhlaWdodDogMzAwLjBweDsKICAgICAgICAgICAgICAgIGxlZnQ6IDAuMCU7CiAgICAgICAgICAgICAgICB0b3A6IDAuMCU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIDwvc3R5bGU+CiAgICAgICAgCjwvaGVhZD4KPGJvZHk+ICAgIAogICAgCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvbGl1bS1tYXAiIGlkPSJtYXBfZjY2NDA3NDg5ZGE2NDcyNDk5MGI0MDg5NDMyY2U3MDgiID48L2Rpdj4KICAgICAgICAKPC9ib2R5Pgo8c2NyaXB0PiAgICAKICAgIAoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgYm91bmRzID0gbnVsbDsKICAgICAgICAgICAgCgogICAgICAgICAgICB2YXIgbWFwX2Y2NjQwNzQ4OWRhNjQ3MjQ5OTBiNDA4OTQzMmNlNzA4ID0gTC5tYXAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWFwX2Y2NjQwNzQ4OWRhNjQ3MjQ5OTBiNDA4OTQzMmNlNzA4JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtjZW50ZXI6IFs1Mi4wMjQ5MTQ3MzE1MTU5LC0wLjcwOTc0NzQ3NDE5NjMzMl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6b29tOiAxNSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heEJvdW5kczogYm91bmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJzOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmxkQ29weUp1bXA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JzOiBMLkNSUy5FUFNHMzg1NwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHRpbGVfbGF5ZXJfMmY4Y2M2MDJmOWFjNGQxM2JhYmYwMWQwMjJmMWMxMzQgPSBMLnRpbGVMYXllcigKICAgICAgICAgICAgICAgICdodHRwczovL3tzfS50aWxlLm9wZW5zdHJlZXRtYXAub3JnL3t6fS97eH0ve3l9LnBuZycsCiAgICAgICAgICAgICAgICB7CiAgImF0dHJpYnV0aW9uIjogbnVsbCwKICAiZGV0ZWN0UmV0aW5hIjogZmFsc2UsCiAgIm1heFpvb20iOiAxOCwKICAibWluWm9vbSI6IDEsCiAgIm5vV3JhcCI6IGZhbHNlLAogICJzdWJkb21haW5zIjogImFiYyIKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfZjY2NDA3NDg5ZGE2NDcyNDk5MGI0MDg5NDMyY2U3MDgpOwogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzJhYjM0NDBiZmUxZTRlNTQ4ZWU1ZGFhNTJjZjJhYjYyID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNTIuMDI0OTE0NzMxNTE1OSwtMC43MDk3NDc0NzQxOTYzMzJdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9mNjY0MDc0ODlkYTY0NzI0OTkwYjQwODk0MzJjZTcwOCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8zNWNkMWVkMDE2MDM0MWJjYjZlZjcxMDliYzBkZjYyMSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF81NGViM2NkZDdjNzU0ZGQzYWFlYmM1ZTRiZGIwMDkwMiA9ICQoJzxkaXYgaWQ9Imh0bWxfNTRlYjNjZGQ3Yzc1NGRkM2FhZWJjNWU0YmRiMDA5MDIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkxvY2F0aW9uIG9mIE1LNyA2QUEgaW4gdGhlIE1pbHRvbiBLZXluZXMgU291dGggY29uc3RpdHVlbmN5PC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8zNWNkMWVkMDE2MDM0MWJjYjZlZjcxMDliYzBkZjYyMS5zZXRDb250ZW50KGh0bWxfNTRlYjNjZGQ3Yzc1NGRkM2FhZWJjNWU0YmRiMDA5MDIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8yYWIzNDQwYmZlMWU0ZTU0OGVlNWRhYTUyY2YyYWI2Mi5iaW5kUG9wdXAocG9wdXBfMzVjZDFlZDAxNjAzNDFiY2I2ZWY3MTA5YmMwZGY2MjEpOwoKICAgICAgICAgICAgCiAgICAgICAgCjwvc2NyaXB0Pg==\" style=\"position:absolute;width:100%;height:100%;left:0;top:0;border:none !important;\" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe></div></div>"
],
"text/plain": [
"<folium.folium.Map at 0x7fb51458f4a8>"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import requests\n",
"postcode = 'MK7 6AA'\n",
"\n",
"r=requests.get('https://api.postcodes.io/postcodes/{PC}'.format(PC=postcode)).json()['result']\n",
"lat=r['latitude']; lon=r['longitude']; pc=r['parliamentary_constituency']\n",
"mymap = folium.Map(location=[lat, lon], zoom_start=15, width=600, height=300)\n",
"\n",
"#Create a popup message\n",
"popupstr = 'Location of {PC} in the {pc} constituency'.format(PC=postcode,pc=pc)\n",
"\n",
"#Display a marker for the location\n",
"folium.Marker([lat, lon], popup=popupstr).add_to(mymap)\n",
"mymap"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## And That's Just for Starters..."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"- work with musical notation, create and embed sounds"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"- use notebooks as a rich authoring environment"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"- export to Microsoft Word, PDF or HTML"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"- create slideshows like this..."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## A Wide Range of Third Party Packages Have Notebook Support"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"slideshow": {
"slide_type": "-"
}
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/usr/local/lib/python3.5/dist-packages/MDAnalysis/__init__.py:245: UserWarning: #####\n",
"MDAnalysis on python 3 is highly experimental!\n",
"It is mostly non functional and dramatically untested.\n",
"Use at your own risks!!!\n",
"\n",
" ''')\n"
]
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "ba56c7ee6e814813acb9b44892d12130",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"A Jupyter Widget"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import MDAnalysis as mda\n",
"import nglview as nv\n",
"from nglview.datafiles import PDB, XTC\n",
"import warnings\n",
"warnings.filterwarnings(\"ignore\")\n",
"\n",
"u = mda.Universe(PDB, XTC)\n",
"\n",
"protein = u.select_atoms('protein')\n",
"nv.show_mdanalysis(protein)"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Diagrams Using Graphviz `dot` language"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {},
"outputs": [
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.38.0 (20140413.2041)\n",
" -->\n",
"<!-- Title: finite_state_machine Pages: 1 -->\n",
"<svg width=\"356pt\" height=\"185pt\"\n",
" viewBox=\"0.00 0.00 356.28 185.09\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 181.095)\">\n",
"<title>finite_state_machine</title>\n",
"<polygon fill=\"white\" stroke=\"none\" points=\"-4,4 -4,-181.095 352.284,-181.095 352.284,4 -4,4\"/>\n",
"<!-- LR_0 -->\n",
"<g id=\"node1\" class=\"node\"><title>LR_0</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"34.5473\" cy=\"-78.5473\" rx=\"30.5892\" ry=\"30.5892\"/>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"34.5473\" cy=\"-78.5473\" rx=\"34.5946\" ry=\"34.5946\"/>\n",
"<text text-anchor=\"middle\" x=\"34.5473\" y=\"-74.8473\" font-family=\"Times,serif\" font-size=\"14.00\">LR_0</text>\n",
"</g>\n",
"<!-- LR_2 -->\n",
"<g id=\"node3\" class=\"node\"><title>LR_2</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"169.642\" cy=\"-113.547\" rx=\"30.5947\" ry=\"30.5947\"/>\n",
"<text text-anchor=\"middle\" x=\"169.642\" y=\"-109.847\" font-family=\"Times,serif\" font-size=\"14.00\">LR_2</text>\n",
"</g>\n",
"<!-- LR_0&#45;&gt;LR_2 -->\n",
"<g id=\"edge1\" class=\"edge\"><title>LR_0&#45;&gt;LR_2</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M68.1059,-87.1093C86.8488,-92.0381 110.509,-98.26 130.167,-103.429\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"129.473,-106.866 140.035,-106.024 131.254,-100.096 129.473,-106.866\"/>\n",
"<text text-anchor=\"middle\" x=\"104.095\" y=\"-103.347\" font-family=\"Times,serif\" font-size=\"14.00\">SS(B)</text>\n",
"</g>\n",
"<!-- LR_1 -->\n",
"<g id=\"node4\" class=\"node\"><title>LR_1</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"169.642\" cy=\"-34.5473\" rx=\"30.5947\" ry=\"30.5947\"/>\n",
"<text text-anchor=\"middle\" x=\"169.642\" y=\"-30.8473\" font-family=\"Times,serif\" font-size=\"14.00\">LR_1</text>\n",
"</g>\n",
"<!-- LR_0&#45;&gt;LR_1 -->\n",
"<g id=\"edge2\" class=\"edge\"><title>LR_0&#45;&gt;LR_1</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M67.7658,-67.8961C86.7202,-61.63 110.791,-53.6723 130.665,-47.102\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"131.939,-50.3675 140.334,-43.9055 129.741,-43.7213 131.939,-50.3675\"/>\n",
"<text text-anchor=\"middle\" x=\"104.095\" y=\"-63.3473\" font-family=\"Times,serif\" font-size=\"14.00\">SS(S)</text>\n",
"</g>\n",
"<!-- LR_3 -->\n",
"<g id=\"node2\" class=\"node\"><title>LR_3</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"313.736\" cy=\"-34.5473\" rx=\"30.5892\" ry=\"30.5892\"/>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"313.736\" cy=\"-34.5473\" rx=\"34.5946\" ry=\"34.5946\"/>\n",
"<text text-anchor=\"middle\" x=\"313.736\" y=\"-30.8473\" font-family=\"Times,serif\" font-size=\"14.00\">LR_3</text>\n",
"</g>\n",
"<!-- LR_2&#45;&gt;LR_2 -->\n",
"<g id=\"edge4\" class=\"edge\"><title>LR_2&#45;&gt;LR_2</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M157.689,-141.971C157.157,-152.96 161.142,-162.095 169.642,-162.095 175.353,-162.095 179.025,-157.971 180.659,-151.932\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"184.144,-152.254 181.595,-141.971 177.175,-151.6 184.144,-152.254\"/>\n",
"<text text-anchor=\"middle\" x=\"169.642\" y=\"-165.895\" font-family=\"Times,serif\" font-size=\"14.00\">SS(b)</text>\n",
"</g>\n",
"<!-- LR_1&#45;&gt;LR_3 -->\n",
"<g id=\"edge3\" class=\"edge\"><title>LR_1&#45;&gt;LR_3</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M200.43,-34.5473C220.241,-34.5473 246.603,-34.5473 268.807,-34.5473\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"269.002,-38.0474 279.002,-34.5473 269.001,-31.0474 269.002,-38.0474\"/>\n",
"<text text-anchor=\"middle\" x=\"239.689\" y=\"-38.3473\" font-family=\"Times,serif\" font-size=\"14.00\">S($end)</text>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/plain": [
"<graphviz.dot.Digraph at 0x7fb4fd429e10>"
]
},
"execution_count": 39,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# http://www.graphviz.org/content/fsm\n",
"from graphviz import Digraph\n",
"f = Digraph('finite_state_machine')\n",
"f.attr(rankdir='LR', size='8,5')\n",
"\n",
"f.attr('node', shape='doublecircle')\n",
"f.node('LR_0') ;f.node('LR_3');\n",
"\n",
"f.attr('node', shape='circle')\n",
"f.edge('LR_0', 'LR_2', label='SS(B)'); f.edge('LR_0', 'LR_1', label='SS(S)')\n",
"f.edge('LR_1', 'LR_3', label='S($end)'); f.edge('LR_2', 'LR_2', label='SS(b)')\n",
"\n",
"f"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Not Just Science and Engineering..."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"For music, we need to set up some mess - though there are ways round this..."
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {},
"outputs": [],
"source": [
"from music21 import *\n",
"\n",
"environment.UserSettings()['lilypondPath']='/usr/bin/lilypond'\n",
"environment.set('pdfPath', '/usr/bin/musescore')\n",
"environment.set('graphicsPath', '/usr/bin/musescore')\n",
"environment.set(\"musescoreDirectPNGPath\", \"/usr/bin/musescore\")\n",
"environment.set(\"musicxmlPath\", \"/usr/bin/musescore\")\n",
"\n",
"from IPython.display import Image"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### But then things get easier"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<IPython.core.display.Image object>"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"c = chord.Chord(\"C4 E4 G4\")\n",
"c.isConsonant()\n",
"c.show('lily.png')\n",
"Image(filename=c.write('lily.png'))"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"slideshow": {
"slide_type": "-"
}
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<IPython.core.display.Image object>"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"myBach = corpus.parse('bach/bwv57.8')\n",
"alto = myBach.parts['Alto']\n",
"\n",
"alto.show('lily.png')\n",
"Image(filename=alto.write('lily.png'))"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Electrical Circuits"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\nv452IlAE+NcAGxbL5GJZeoTij5L6GhwXEWVfwVnvODmPVU5E3AYcBxwnaTWGUuhuwfAUuq8plv8F\n7pWUp9D1/f0ROOh3qBgKcrSk40hX4geQrsRr4+OXJPU4zadmfEHS30kpX+cAzwELk9K/LknK+79w\nk5fuakuCmdkgi4h7gZOBkyWtQPq93RnYFlgsK7oacEixzCxaZD/pYXvDOeiPUTEhwzRgWnFGuh+w\nPyOnc10QWK+Dl/kXcBpwakTc2WldzczGs4h4FPgR8CNJiwPbkG4B7AQslxVdHjiU1Mr6o37Xc5A5\n6HdRcUZ6rKTPke7zb8jwpvo1WzjMPQzdEqjdFrjX96omDP/NmXVBRMymmBGvuDW6OekEYDeGbrk2\nSstbWf4B6oEiQN9XLC92sJO0DLAGqTl/UVICnZrJwD3OnjeujTR7X70Vmhcxs3YULa6XApdKeprU\n38pG4KDfRxHxBPDn2uM8lX9E3FhGnayr1m6hTH1PZDOzvvE4fbPumTza2GFJkxk56YiZWV846Jt1\nzwLAWZJWrH9C0prAOXWb+3a/caxpeLu0OA2vWcncvG+VJOmCETa/JFs/RtLDdc+fFxHnjXLYJ0lX\n8v+QNA34B+lvbH3SMKOFgQcYCvYflbQk8FxEHNPB22jHIKXhdZIgs5I46FtV7dLk+beOsO2WJvtM\nB5Yi9SDed4Tnbyxe92ZgcWBl4JP0Z0jRCcDRlBv4nYbXrGQO+mbdE8B7gANJQX9d0t/YnaQpmr8a\nEXMk7UUKfiuTTgR+3POKjTENbz7TXkRotLJmNrgc9K2SehW4ismOvl0sjcrUUoU2en6N7tfMzMwd\n+czMzCrDQd/MzKwiHPTNzMwqwkHfzMysItyRz8zMrE2SNgU2HaXIExHx/X7Vp1UO+mZmZu3bBvjs\nKM/fAzjom00kEXE54HHrZjYu+J6+mZlZmyLi6IjQKMsaZddxJA76ZmZmFeGgb2ZmVhEO+mZmZhXh\noG9mZlYRDvpmZmYV4aBvZmZWEQ76ZmZmFeGgb2ZmVhEO+mZmZhXhoG9mZlYRDvpmZmYV4aBvZmZW\nEQ76ZmZmFeGgb2ZmVhEO+mZmZhXhoG9mZlYRDvpmZmYV4aBvZmZWEQ76ZmZmFeGgb2ZmVhEO+mZm\nZhXhoG9mZlYRDvpmZmYV4aBvZmZWEQ76ZmZmFeGgb2ZmVhEO+mZmZhXhoG9mZlYRDvpmZmYV4aBv\nZmZWEQ76ZmZmFeGgb2ZmVhEO+mZmZhXhoG9mZlYRDvpmZmYV4aBvZmZWEQ76ZmZmFeGgb2ajkqSy\n62Bm3eGgb2YjkrS8pE8Af6vbfo6krUqqlpmNgYO+mc1H0nrA9cDxwDp1T+8OXCrpS24FMBtfHPTN\nbBhJLwEuAVZvUvR/gCN7XyMz6xYHfTOr92Fg1RbLHiVp6V5Wxsy6x0HfzF4kaRIp6LdqKWCfHlXH\nzLpMEVF2HSpLkj98M7PemRERO5ZdiUHioF8iSfMAd4QyM+uNRyNixbIrMUjcvF+uCwGfdZmZdd8z\nwBfLrsSg8ZW+mQ0j6ZPAcS0WfxxYLSKe6mGVzKxLfKVvZvW+B9zTYtnPOeCbjR8O+mY2TEQ8Crwd\n+HuTop8FTux9jcysW9y8b2YjKsbf7wMcAGxQbJ4NnAOcEhHXlFU3M+uMg76ZNSVpEWAR4KmImFd2\nfcysMw76ZmZmFeF7+mZmZhXhoG9mZlYRDvpmZmYV4aBvZmZWEQ76ZmZmFeGgb2ZmVhEO+mZmZhXh\noG9mZlYRDvpmZmYV4aBvZmZWEQ76ZmZmFeGgb2ZmVhEO+mZmZhXhoG9mZlYRDvpmZmYV4aBvZmZW\nEQ76ZmZmFeGgb2ZmVhEO+mZmZhXhoG9mZlYRDvpmZmYV4aBvZmZWEQ76ZmZmFeGgb2ZmVhEO+mZm\nZhXhoG9mZlYRDvpmZmYV4aBvZmZWEQ76ZmZmFeGgb2ZmVhH/D5eXt/dxlMJEAAAAAElFTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7fb4ff6967b8>"
]
},
"metadata": {
"image/png": {
"height": 136,
"width": 254
}
},
"output_type": "display_data"
}
],
"source": [
"import SchemDraw as schem\n",
"import SchemDraw.elements as e\n",
"\n",
"d = schem.Drawing()\n",
"V1 = d.add(e.SOURCE_V, label='5V')\n",
"d.add(e.LINE, d='right', l=d.unit*.75)\n",
"S1 = d.add(e.SWITCH_SPDT2_CLOSE, d='up', anchor='b', rgtlabel='$t=0$')\n",
"d.add(e.LINE, d='right', xy=S1.c, l=d.unit*.75)\n",
"d.add(e.RES, d='down', label='$100\\Omega$', botlabel=['+','$v_o$','-'])\n",
"d.add(e.LINE, to=V1.start)\n",
"d.add(e.CAP, xy=S1.a, d='down', toy=V1.start, label='1$\\mu$F')\n",
"d.add(e.DOT)\n",
"d.draw(showplot=False)"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Scientific Drawings - Asymptote"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [],
"source": [
"drawingspec = '''\n",
"import math; import graph; import geometry;\n",
"size(12cm); xaxis(\"$x$\"); yaxis(\"$y$\");\n",
"real theta1={theta1}; real theta2={theta2};\n",
"real L1=0.45; real L2=0.48;\n",
"pair l1p = (L1*sin(theta1), L1*cos(theta1));\n",
"pair l2p = l1p + (L2*sin(theta1+theta2), L2*cos(theta1+theta2));\n",
"draw((0,0)--l1p--l2p); draw(l1p--l1p*1.5, dashed); dot(l2p); draw((0,0)--l2p, dashed); \n",
"label(\"$J1(0,0)$\", (0,0), NW); label(\"$J2(u,v)$\", l1p, NW); label(\"$H(x,y)$\", l2p, NE);\n",
"draw(\"$L1$\",(0,0)-0.02*I*l1p--l1p-0.02*I*l1p, red, Arrows, Bars, PenMargins);\n",
"draw(\"$L2$\", l1p-0.02*I*l2p--l2p-0.02*I*l2p, red, Arrows, Bars, PenMargins);\n",
"draw(\"$\\\\theta_1$\", arc((0,1),(0,0),l1p,0.1), blue, PenMargins);\n",
"draw(\"$\\\\theta_2$\", arc(l1p,0.1,degrees(l1p),degrees(l2p-l1p),CW), blue, PenMargins);\n",
"draw(\"$\\\\alpha$\", arc((1,0),(0,0),l2p,0.2), blue, PenMargins);\n",
"'''"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [],
"source": [
"import subprocess # to run asymptote\n",
"import shlex"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Our Drawings are Now Reproducible and Maintainable"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"slideshow": {
"slide_type": "-"
}
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<IPython.core.display.Image object>"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"f=open('/tmp/pa10-firstjoint.asy', 'w')\n",
"\n",
"theta1='-pi/2' ; theta2='pi/3'\n",
"\n",
"f.write(drawingspec.format(theta1=theta1,theta2=theta2)); f.close()\n",
"subprocess.call(shlex.split('asy /tmp/pa10-firstjoint.asy -f png -o pa10-firstjoint.png'))\n",
"Image('pa10-firstjoint.png')"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Doing Symbolic Maths"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [],
"source": [
"#Import sympy packages\n",
"import math\n",
"from sympy import *\n",
"from sympy import init_printing\n",
"init_printing()\n",
"\n",
"b,c,B,C=symbols(['b','c','B','C'])"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAGIAAAAjCAYAAABvod/HAAAABHNCSVQICAgIfAhkiAAAA8NJREFU\naIHt2ltoHHUUx/FPS0NRk1rU1khRAyoxWjEoWJ9E0AfRvnhHESwi3gVREcH6qBV8sVRRfJAF31Tw\nbrWlEOqDV6RYxGJTLVrFB9GYltp6aXw4Mzq7bpKZ7sxuTOcLA5vJmfM/v/3P+Z//ZamZF4zh6V4H\nMR9Y2OsAaoK6I4qzAA9gJw5iD9Z16rSMjliE9fgluZ4sye9c5XE8Kr78s3EtvutpRKJG7MUGnInr\n8Cvu72FMVdKPA7ij14G0MoavRLqmrBXpOh+5AFM4o2zHZQwhH4rgUj7ACiwpwfcRw3wey6vgS1Gg\nLynb8aISfKwSQ1OaFRfiB0yW4HuusVdMTNaJDtmK43E+nu1hXP8U6/UYxjWYwIM9jKlqFuJhfI3f\nxYzpsU6dLpjdZEbGsAN/4iaRFS/gIfzVoe923IelBey34bUK4jji2S06O+/V6EWQNTU1nZLWiKkZ\nrbrPdLWrzBox1zT/r9itrhG56MNATtsTqgykixTRzDS6Z1pZD4m36vScDSzDI2JuTbyN2bfzJ7wl\nNgfhJNyV03e3GNKZZjhRrKt2iUXf99iIy5P/F9Y9gHtwbA7bPrzaYtvAZgwm13nYIrYJUlZjTZGg\nKqZTzUPii98hdqKHMZL4/DZjV5nutUljWRoiA7KsFm/cUZl7m7G8iqAqpp3md0RH9Lexb51kNOnO\nDk1PiLOEXWKrglglD4oU/EIcivwoiualGR+3491ZAh/A9diO3zL3P8bNszxbFWVqPg6X4Rnsa9PW\nRMvfbXWvxH6cg4vwfHJ/SqTbUPL5FTF+PiW2v2EUf7RpuCG2PvYl15RIz5UtdjfiozbPV03ZmtOz\niitztt+kO82IieTzKN7HvdM8vAbjeEMUJThFvFXt2Jr4HE0C3YJNODljM4nTcgZfJmVrLrpv16Q7\n7Yg9uEGk6jacO83DacodyjS82PQbfPuFiHF8glvFgdFtGZsDik3/yqJszTtFRozkbL9Jd9oRy/G2\nSMFNeDmnM2IbOM8sgwj0EI7O3FsiCly3KVvzz3hPFPA8xbpJd9oRZ+E5UaTGxdQsL9tFLWg381ns\n3+nriPiRQT/ezNgM4rMC7ZVFFZrvFlnzqfh1x7BYN92Jz1ts2+peipfEuPUNrkjutxaulIvFLCKl\n4b9FqqF5QTcpZgpXt9i9KKa13aYKzcSCbYM4ODooTis3ihlVlkp0n4rXD+O5FWJI6PSAqhccrmYq\n1n0Vbilg3yd+jLasimC6RFHNdEn3KnGYntf2mApj6RZFNKf280F3TU1NTU2X+BsNUgGa5E+f0AAA\nAABJRU5ErkJggg==\n",
"text/latex": [
"$$\\frac{b}{\\sin{\\left (B \\right )}} = \\frac{c}{\\sin{\\left (C \\right )}}$$"
],
"text/plain": [
" b c \n",
"────── = ──────\n",
"sin(B) sin(C)"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#A simple example of the sine rule\n",
"exp=Eq(b/sin(B),c/sin(C))\n",
"exp"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## `sympy` Symbolic Maths Packages Lets You Solve Equations"
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAFIAAAAlCAYAAADRC77iAAAABHNCSVQICAgIfAhkiAAABCBJREFU\naIHt2VloHXUUx/FPg6GoSV2btrj0gpVatVi02jcRFRUNQt2KghpEXCsIIogLCFIr1IeKL+KDXvBN\nBXerFgtuuCLFKhVqtZhGqmiXWNvGLT6cuWQymbnOTdLkXpIvDEnmnP928l/O/H9M047Okr7HFhna\nxqcvTUMFg1hQ0n82HsCfqCZla8+veB2npPzn4Y7x6Wpz04mVOKKEbzteSvlWsR5zk+dMvIvNmXLd\n6Bl7VyeWGbgHWzCA7Vg9TnU/KIJeoypmYJpuMTsPzbxfj670i2Zf2o/iIRG803A1ehPbY9iDrbgq\nVeYZMaNm45ukjh3YhgsTnzbcirfqtN2JFdiE/RnbZ7hxFOOZFDpwALfl2E7HPizGuXg6ZRsUe2Ul\n+f1FsWeuxSeJzxL8lamzir+xN3kG8WPSVpbr8GlDo5lEzhGDOTnHdrwI8vVi+c9M2bKB7Ejen48f\nkt8vF4dJmio2iKAvwNl4Fj/hhIxvd7Z8emnXGq7mj6up2I5rxfLeiDPq+O5Nfv4rgk4E/p8c3334\nLnk+x82YhVsyfgdkUqZm3iM3iwPmghxbF94QM+cdvNBg3b3KneyD4h9wWOb9LPSlXxzSYAcmkt/x\nhDhoBvA+jsFZIsg34BExe9obrHuT2A+78Evq/UxxUMFR4lTvwGuZ8nPxZVHlFc23tNtwH74XSXMv\nVuFIPI9+se9dliqT3SNrnCdO7hpVLM/8nU7I+8XpfGVOv54T+2QutYarIpt/GTvxBz7ERUUFW5T5\neGUU5Y4TW8mMIoeKCOR72CWW0moR2P1ic14xioabmStwUwP+7VgjctRhpKNaMZQePI57U7al+Fic\ngPPFtM/jbrHsyrJRzPzJZJnYZ38r6fu1WKWFVMSM3C3/NqSa2Otl9NsM32f+76mW6HzLURGD21Bg\n70nsayeoPy1FXh75c4HvjuRnmfxrypGXR84p8K3lV3vq1Deee+Rgwfump2J6jxwXKoYGuCZjWypu\nS3aLz6NWphFpgTryQhEVrZdHVjQuLTxs+G3RHPEpulV8ivZhHS5N7Is1KC/UOlXFIpH17xI3Ih/h\n4kYqmyDGIi0QY+7Dt7gGC8XYV4q7yBotKS8cLLLSArwpAtkx0n3EoTlCXmhl8uSFstJCr+FbwNHi\niuz+km2vMvxrr2UpkhdGKy3UbuCXK0ddeaGZL3az7Bb9XYIPcFeBX4/4dn7VUE58opH5b+HtTQH9\nOKnI2EqBLCsvlJUWtogZuahk+yPkhTStFMixyAt50sJOvG3oFjxL9rAZIS+kaaVAnoqnxMHSqLyQ\nlhbS3Clm7RdCM18oLrVvx1cZ37ryQitRJC+MVlqoMQ9PCjljQMiv63BJxq+uvDCVGK20QAl5YarR\nqLRAHXlhqrNMyLqN+B9+kPoyzTTTTDMl+A+AEh26hzFVwwAAAABJRU5ErkJggg==\n",
"text/latex": [
"$$b = \\frac{c \\sin{\\left (B \\right )}}{\\sin{\\left (C \\right )}}$$"
],
"text/plain": [
" c⋅sin(B)\n",
"b = ────────\n",
" sin(C) "
]
},
"execution_count": 49,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#We can solve for b:\n",
"distance_b = solve(exp)[0][b]\n",
"Eq(b, distance_b)"
]
},
{
"cell_type": "code",
"execution_count": 50,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/latex": [
"$$b = \\frac{c \\sin{\\left (B \\right )}}{\\sin{\\left (C \\right )}} = 22375.2723037434$$"
],
"text/plain": [
" c⋅sin(B) \n",
"b = ──────── = 22375.2723037434\n",
" sin(C) "
]
},
"execution_count": 50,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#Then we can substitute in values\n",
"Eq(Eq(b,distance_b), distance_b.subs({c:27404,B:math.radians(45),C:math.radians(60)}))"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## To get started with notebooks"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"- Temporary / disposable trial notebooks: `try.jupyter.org`"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"- Personal notebooks: `notebooks.azure.com` (not OU account?)"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"- Install on your own computer - via `Anaconda`, one of the many *Docker* containers, or the OU TM351 VM"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"- Try out the OU / FutureLearn *Learn to Code for Analysis* MOOC"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"- Join the lobbying for an OU hosted notebook server"
]
}
],
"metadata": {
"celltoolbar": "Slideshow",
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.5.2"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Display the source blob
Display the rendered blob
Raw
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
@psychemedia
Copy link
Author

pip3 install RISE
jupyter-nbextension install rise --py --sys-prefix
jupyter-nbextension enable rise --py --sys-prefix

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment