Åtgärder

Jupyter

Från DAU-handboken

Snabbguide Jupyter

Den här guiden beskriver i huvudsak Jupyter Notebook 6.x.[1] [14] Den kan med fördel utökas med mer information om resten av Project Jupyter.

Information om Jupyter

Jupyter Notebook (tidigare IPython Notebook) är ett gränssnitt och ett filformat som ofta används för explorativ dataanalys, demonstrationer och undervisningsmaterial. Filformatet låter dig kombinera avsnitt med text, bilder och annan media med avsnitt som innehåller programkod och resultat i samma fil. Konceptet brukar kallas notebook interface eller computational notebook.[2] Jupyter Notebook är öppen källkod, används av forskare inom många områden och erbjuds som molntjänst av företag och infrastrukturer som Microsoft, Google och European Open Science Cloud (EOSC-hub).

Jupyter Notebook är därmed inget fristående analysverktyg utan ett redskap för att arbeta med programkod som analysverktyg eller för att presentera resultaten samt den bakomliggande arbetsprocessen. [15] Den huvudsakliga fördelen med verktyget är att kunna köra programkod på ett lättillgängligt sätt. Beskrivningar och kod läggs in i notebookfilen i en sekvens av avgränsade celler, som sedan kan markeras och köras individuellt. Eventuell utmatning dyker upp under respektive cell. Jupyter fungerar på samma sätt oavsett programspråk, men för att kunna köra programkod krävs att en s.k. kernel för programspråket finns tillgänglig på datorn tillsammans med eventuella programpaket som används.[3] Gränssnittet kan också utökas med widgets som t.ex. används för att interagera med data eller programkod.[4]

Jupyter Notebook är ett delprojekt i det större Project Jupyter, vars namn är en sammandragning av programspråken Julia, Python och R.[5] Ett annat delprojekt är JupyterLab, som är en vidareutveckling och framtida ersättare för gränssnittet till Jupyter Notebook.[6] JupyterLab öppnar och skriver samma filformat som Jupyter Notebook.

JupyterHub är en serverprogramvara som gör Jupyter Notebook och/eller JupyterLab med kernels och widgets tillgänglig för användare över internet.[7]

Ett enkelt sätt att hämta Jupyter Notebook är som en del av den Python- och R-baserade programsviten Anaconda, som finns för Windows, macOS och Linux.[8]

Om Jupyter Notebook används för att dokumentera och dela vetenskapliga resultat rekommenderas att författarna stabiliserar en notebook innan den publiceras och citerar både de individuella data och den mjukvaran som ingår i en notebook. [16]

Lathund

Att öppna och spara en fil

Jupyter Notebook kräver en webbläsare och officiellt stöds de senaste versionerna av Chrome, Safari och Firefox. När du har startat Jupyter Notebook lokalt på datorn öppnas dess gränssnitt i din webbläsare och du möts av en lista med filer. Du kan skapa en ny notebook genom att navigera till önskad mapp och klicka New uppe till höger. Du väljer sedan en kernel för det programspråk som du skall använda i Noteboken, t.ex. Python 3, och en ny notebook skapas i samma mapp med filnamnet "Untitled".

Jupyter Notebooks har filändelsen .ipynb och kan identifieras på sin särskilda ikon i webbfilhanteraren. För att öppna en existerande notebook navigerar du till dess mapp och klickar på den i webbfilhanteraren.

Din öppnade notebook sparas automatiskt allt eftersom du arbetar i den och lägger till nya celler. I File-menyn finns dock möjligheten att skapa s.k. checkpoints med Save and Checkpoint. Du sparar då undan en version av notebooken som det är möjligt att gå tillbaka till senare. Samtidigt fortsätter notebooken att autosparas.

Eftersom Jupyter utvecklats i programspråket Python finns alltid en kernel för Python 3.x tillgänglig. Du kan behöva konfigurera eller installera en annan kernel om programkoden är skriven i ett annat programspråk eller om den förutsätter att vissa programpaket finns installerade. Detta är dock något som du sköter utanför Jupyter Notebook, med hjälp av pakethanterare eller installationsprogram.

Det är också möjligt att öppna och arbeta i en Jupyter Notebook som finns på en annan server eller molntjänst. Du interagerar då i webbläsaren med notebooken, men all kod körs på servern. Detta kan vara en fördel då man vill tillgängliggöra en färdig miljö som användaren kan jobba i direkt utan att behöva installera extramjukvara på egen dator eller lagra datasets lokalt. En vanlig sådan lösning är fleranvändarservern JupyterHub (se ovan) eller den tidigare varianten Binder,[9] och det finns ett urval av molntjänster för att arbeta på detta sätt.

Exempel på molntjänster för Jupyter

  • Azure Notebooks
  • Google Colab
  • EOSC-hub
  • EGI
  • Code Ocean

Dokumentationsmöjligheter

En Jupyter Notebook utgör i sig ofta en del av dokumentationen av en analys eller ett projekt. Den information i notebookfilen som inte är programkod utan t.ex. förklaringar och beskrivningar byggs upp med hjälp av ett standardiserat märkspråk, Markdown.[10] Detta är utformat för att vara intuitivt och kan t.ex. jämföras med wikitext. Det går också att använda sig av LaTeX-syntax för att t.ex. generera formler och liknande notation i cellerna.

Det kanske viktigaste att dokumentera om själva Jupyter Notebook-filen är de olika beroenden som finns till andra entiteter. Detta kan röra sig om programspråk och kernels, programbibliotek som anropas, eller olika verktyg på datorn som används för t.ex. nedladdning, filhantering eller konvertering när notebooken körs. En tydlig redogörelse för vilken mjukvara som används och vilka versioner av denna som krävs behöver därför finnas med i dokumentationen, t.ex. som en readme-fil.

I de fall som data för analysen eller annat material länkas eller hämtas in genom URL:er eller API-anrop är det eftersträvansvärt att använda olika typer av persistenta adresser och identifierare. Om möjligt bör också kontaktuppgifter till ansvariga för det externa materialet finnas med i dokumentationen utifall att det inte längre skulle gå att komma åt på anvisat sätt.

Filtyper som stöds i Jupyter

Filformatet IPyNB

Jupyter Notebook 6.x använder filformatet Jupyter Notebook Format 5.x.[11] Filerna är uppbyggda i JSON-format och innehåller cellerna och en beskrivning av den kernel som används för programkoden. Skapar du checkpoints sparas dessa i samma format men i en undermapp: ".ipynb_checkpoints/".

  • Notebook (.ipynb)
  • Checkpoint (.ipynb)

Viktigt att tänka på är att en Jupyter Notebook kan sparas i olika tillstånd, t.ex. med körd kod i ett urval av cellerna, och med eller utan skapad utmatning. Vilket tillstånd den bör sparas och lagras i beror på syftet med projektet. Om den är tänkt att redovisa resultat kanske den bör sparas i kört tillstånd med all utmatning, eller kanske exporteras i motsvarande tillstånd. Om det är en redovisning av en viss analysmetod så kanske det istället är lämpligt att lagra den i okört tillstånd med ett minimalt fungerande exempel inmatat, så att användaren snabbt kan se att det fungerar och prova att ladda in egen data.

Import

Länkad media
Precis som en webbplats kan en Jupyter Notebook ha en mängd material inlänkat från andra platser. Det kan t.ex. röra sig om sökvägar till filer i filsystemet, eller länkar till filer på internet, Youtube-klipp, etc. Inlänkning av olika data och medier kan ske både i Markdown-celler och i celler med programkod.

Inbäddad media
Media och data kan också bäddas in som en del av både Markdown och kod, t.ex. en bild lagrad i base64-kodning eller ett dataset som deklareras som en variabel. Det kan också röra sig om media som skapas i ögonblicket som programkoden i notebooken körs, t.ex. skapade grafer och diagram, en genererad ljudsignal eller andra typer av procedurellt skapad media.

Export

Det är möjligt att exportera en Jupyter Notebook till olika mer eller mindre statiska presentationsformat. Detta görs genom att välja Export Notebook As... i File-menyn. I praktiken genomförs konverteringen av det separata verktyget nbconvert.[12]

  • AsciiDoc (.asciidoc)
  • HTML (.html)
  • LaTeX (.tex)
  • Markdown (.md)
  • PDF (.pdf)
  • reStructuredText (.rst)
  • Reveal.js slides (.slides.html)

Det finns också ett separat verktyg vid namn nbviewer som kan användas för att skapa en webbsida utifrån en Jupyter Notebook.[13]

Det är möjligt att exportera den samlade koden i notebooken till en separat källkodsfil, t.ex. .py för Pythonkod. Även detta kan göras från Export-menyn.

Källor

1.^ The Jupyter Notebook
2.^ Wikipedia - Notebook interface
3.^ Github - Jupyter kernels
4.^ Jupyter - Interactive Widgets
5.^ Project Jupyter
6.^ JupyterLab Documentation
7.^ JupyterHub
8.^ Anaconda Distribution
9.^ Binder Documentation
10.^ Wikipedia - Markdown
11.^ The Jupyter Notebook Format
12.^ nbconvert: Convert Notebooks to other formats
13.^ nbviewer: A simple way to share Jupyter Notebooks
14.^ Kluyver T., Ragan-Kelley B., Pérez F., Granger B.E., Bussonnier M., Frederic J., Kelley K., Hamrick J.B., Grout J., Corlay S., et al. Jupyter notebooks - a publishing format for reproducible computational workflows. Loizides F., Schmidt B. (Eds.), Positioning and Power in Academic Publishing: Players, Agents and Agendas, IOS Press (2016), pp. 87-90. Doi:10.3233/978-1-61499-649-1-87
15.^ Rule A., Birmingham A., Zuniga C., Altintas I., Huang S.C., Knight R., Moshiri N., Nguyen M.H., Rosenthal S.B., Pérez F., Rose P.W. Ten simple rules for writing and sharing computational analyses in Jupyter Notebooks. PLoS Comput Biol. 15(7):e1007007, 2019. Doi: 10.1371/journal.pcbi.1007007
16.^ Wofford, M.F., Boscoe, B.M., Borgman, C.L., Pasquetto, I.V., Golshan, M.S. Jupyter Notebooks as Discovery Mechanisms for Open Science: Citation Practices in the Astronomy Community. Computing in Science and Engineering 22(1), 8781923, pp. 5-15, 2020. Doi: 10.1109/MCSE.2019.2932067

Blandade länkar

https://jupyter.org/documentation


Författare: André Jernung, Thomas Kieselbach, Nadja Neumann & Wolmar Nyberg Åkerström

Senast uppdaterad: 2020-01-24