Modell, natur og det som er mellom.

Om Jupyter Notebook og JupyterHub ved Kjemisk Institutt

Inspirasjonsseminar, 24. august 2018

Audun Skau Hansen (a.s.hansen@kjemi.uio.no)

Innhold for økta:

  • Motivasjon
  • Python
  • Jupyter Notebook
  • JupyterHub
  • Interaktivt eksempel
    Kort om meg

    Audun Skau Hansen

    a.s.hansen@kjemi.uio.no
    Stipendiat, Kjemisk Institutt (UiO)

  • Utvikler teori og kode for å kunne simulere faste stoffer (for eksempel krystaller) på datamaskinen.
  • Høsten 2018 underviser jeg IN-KJM1900.
  • Interesse for flerpartikkel kvantemekanikk, kvantekjemi og beregninger.
  • Har også bakgrunn som TV-komponist og hovedlærer i Musikkdesign ved Høyskolen Kristiania.

Naturen er ganske komplisert...

Foto Credits: WallpapersCraft

...men vitenskap er ganske enkelt. (eller?)

Foto Credits: Imperial College London

Modeller

  • "Lekesystem" som oppfører seg noenlunde likt som det du observerer i naturen.
  • Et bindeledd mellom teori og naturen: lar oss gjøre testbare prediksjoner.
  • Fremhever det essensielle i det man ønsker å beskrive.
Screen_Shot_2018_08_23_at_14_56_43

Modeller i kjemi

Beskriver blant annet:

  • Atomer
  • Molekyler
  • Materie
  • Struktur og dynamikk (reaksjoner)
  • Modeller og forenklinger

    Screen_Shot_2018_08_23_at_18_49_01

    Er dette en realistisk ukulelestreng?

    Modeller og forenklinger

    subsea

    Er dette en undersjøisk havrygg?

    Modeller og forenklinger

    redvsreal

    Er dette et rom?

    Realisme i modeller

    ukupixel

    Enkle modeller kan ofte gjøres mer realistiske.

    Menneskelig computer

    NACA High Speed Flight Station "Computer Room" (1949), Credits: Wikipedia
    Kostnad for å gjøre modeller realistiske:
  • økt kompleksitet
  • krever mer regnekraft
  • Hvordan kan beregninger gjøre modellene bedre?

    WaveCam - en interaktiv bølgeløser.

    Modeller i kjemi

    Ofte ser vi på realistiske og kompliserte systemer og mekanismer

    Utsnitt av et DNA-molekyl, Credits: Wikipedia

    Beregningsorientering innen kjemi

    • Volumetri
    • Geometri (struktur)
    • Støkiometri
    • Statistikk
    • Beregning av likevekt
    • Titrering
    • Reaksjonskinetikk
    • Molekylærdynamikk
    • Statistisk mekanikk
    • Kvantekjemi

    Noen beregningsverktøy

    Litt om Python:

    • Et fleksibelt programmeringsspråk
    • Interpretert/fortolket
    • Enkelhet og lesbarhet som ideal
    • Brukes gjennomgående ved Det matematisk-naturvitenskapelige fakultet.
    • Mye brukt i forskning og utdanning verden over.
    • Mange byggeklosser:
      • Visualisering (matplotlib, mayavi)
      • Effektive beregninger (numpy, numba, tensorflow)
      • Velutviklet modulsupport:
        • Sympy (analytisk matematikk)
        • Pandas (statistikkbehandling)
        • Interface til andre språk (C++, Fortran)
      • Spesialiserte implementasjoner er ofte lett tilgjengelig på nett
    • Objektorientert

    Jupyter Notebook

    • Dokument som forfattes, deles, konverteres til andre formater og mer.
    • Dokumenteditor/miljø for forskning, utvikling av kode og mer.
    • Nettapplikasjon (brukergrensesnitt, server, litt som Minecraft)
    Screen_Shot_2018_08_15_at_13_23_12

    Mulige bruksområder

    • Notater
    • Rapporter og innleveringer
    • Kalkulator
    • Logg
    • Presentasjoner (denne presentasjonen er laget med Notebook)
    • Egen læring

    Lenke til eksempelnotebooks (lenke)

    Lær å bruke Jupyter Notebook

    Readthedocs Overview (lenke)

    Lær å bruke Python

    Readthedocs Overview (lenke)

    HUB:

    • Brukerhåndtering og autentisering
    • Spawner (lager notebooks til brukerne)

    Med JupyterHub får studenter og undervisere:

    • tilgang til samme arbeidsmiljø (krever ikke installasjon, kun internett og browser)
    • kopier av de samme notebookene som kan brukes lokalt (og individuelt)

    JupyterHub oversikt

    Screen_Shot_2018_08_15_at_16_07_11

    Andre nyttige ressurser

    Statisk html fra denne presentasjonen:

    goo.gl/XSqjbZ

    Trinnvise instruksjoner for jupyterhub ved UiO:

    https://github.uio.no/CSE-KI/misc/blob/master/sop/jupyter-sop.pdf

    In [ ]:
    !jupyter nbconvert JupyterPres.ipynb --to slides --post serve
    
    [NbConvertApp] Converting notebook JupyterPres.ipynb to slides
    [NbConvertApp] Writing 263366 bytes to JupyterPres.slides.html
    [NbConvertApp] Redirecting reveal.js requests to https://cdnjs.cloudflare.com/ajax/libs/reveal.js/3.5.0
    Serving your slides at http://127.0.0.1:8000/JupyterPres.slides.html
    Use Control-C to stop this server
    WARNING:tornado.access:404 GET /custom.css (127.0.0.1) 0.66ms
    WARNING:tornado.access:404 GET /custom.css (127.0.0.1) 0.96ms