Introduktion til IPython Notebooks

Her følger en kort introduktion til IPython Notebooks. Det er vigtigt at du afprøver det hele, da koden samtidig tjekker, at dit system er sat korrekt op.

Hvis du støder på problemer, er det dit eget ansvar at få dem løst inden timen begynder. Husk at Google er din ven! De fleste problemer kan dog løses ved at geninstallere Anaconda (husk at bruge version 3.4 eller højere!).

Kørsel af kode

En kodeblok køres ved at markere den og trykke [Shift] + [Enter]. Prøv at køre blokken herunder, som vil printe information om din version af Python samt tjekke, at det er den rigtige.


In [ ]:
import sys

print(sys.version)
v = sys.version_info

if v[0] < 3:
    print("Du skal bruge Python 3.x for at køre opgaverne!")
else:
    print("Din Python-version er helt rigtig! Godt gået!")

Tjek af pakker

Følgende kode vil tjekke, at du har de nødvendige pakker for at kunne køre opgaverne. Der burde ikke være nogle problemer her, hvis du har installeret Anaconda.


In [ ]:
missing_packages = []
try:
    import numpy as np
except ImportError:
    missing_packages.append("numpy")

try:
    import pandas
except ImportError:
    missing_packages.append("Pandas")

try:
    import skimage
except ImportError:
    missing_packages.append("scikit-image")

try:
    import sklearn
except ImportError:
    missing_packages.append("scikit-learn")
    
try:
    import matplotlib
except ImportError:
    missing_packages.append("matplotlib")


if missing_packages:
    print("Du mangler at installere følgende pakker: {}".format(", ".join(missing_packages)))
else:
    print("Du har alle pakker installeret! Knippelfint!")

Tjek af funktionalitet

Sidste del af denne notebook tester nogle at de funktioner, vi skal bruge - primært visualiseringsfunktioner. Tjek at det du ser, ligner det på denne side (på nær de interaktive elementer): http://nbviewer.ipython.org/gist/digitaldingo/6cecc0e1a08ac1a51efa


In [ ]:
import matplotlib.pyplot as plt
%matplotlib inline
plt.style.use('bmh')
plt.rcParams['axes.color_cycle'] = [plt.cm.Set1(i) for i in np.linspace(0, 1, 9, endpoint=True)]

from mpl_toolkits.mplot3d import axes3d

fig = plt.figure(figsize=(10,7))
ax = fig.gca(projection='3d')
X, Y, Z = axes3d.get_test_data(0.05)
ax.plot_surface(X, Y, Z, rstride=8, cstride=8, alpha=0.3)
cset = ax.contour(X, Y, Z, zdir='z', offset=-100, cmap=plt.cm.coolwarm)
cset = ax.contour(X, Y, Z, zdir='x', offset=-40, cmap=plt.cm.coolwarm)
cset = ax.contour(X, Y, Z, zdir='y', offset=40, cmap=plt.cm.coolwarm)

ax.set_xlabel('X')
ax.set_xlim(-40, 40)
ax.set_ylabel('Y')
ax.set_ylim(-40, 40)
ax.set_zlabel('Z')
ax.set_zlim(-100, 100)

Vi tjekker her muligheden for interaktivitet:


In [ ]:
from IPython.html import widgets
from IPython.display import display
from IPython.html.widgets import interact, interactive, fixed

x = np.linspace(0,4*np.pi,200)

@interact
def plot_sin(x: fixed(x), A:(0,4,0.1)=1, theta:(0,10,0.1)=1, phi:(0,2*np.pi,0.1)=0):
    y = A*np.sin(theta*x + phi)
    fig, ax = plt.subplots(figsize=(10,6))
    ax.plot(x,y)
    ax.set_xlim(0,4*np.pi)
    ax.set_ylim(-4,4)

Lidt mere interaktivitet, denne gang med et billede af Grace Hopper.


In [ ]:
import matplotlib.cbook as cbook
from skimage import filter, io

image_file = cbook.get_sample_data('grace_hopper.png')
i = plt.imread(image_file)

lims = (0.0,1.0,0.01)

@interact
def edit_image(image: fixed(i), sigma:(0.0,20.0,0.1)=0, r:lims=1.0, g:lims=1.0, b:lims=1.0):
    new_image = filter.gaussian_filter(image, sigma=sigma, multichannel=True)
    new_image[:,:,0] = r*new_image[:,:,0]
    new_image[:,:,1] = g*new_image[:,:,1]
    new_image[:,:,2] = b*new_image[:,:,2]
    new_image = io.Image(new_image)
    display(new_image)
    return new_image

In [ ]: