3  Umhverfi fyrir Python: Jupyter og Colab

Árið 2014 var byrjað á verkefni sem nefnist Jupyter (sbr. Wikipediu) sem snýst um að búa til umhverfi þar sem blanda má saman lýsingu verkefna, stærðfræðiformúlum, forritum, og úttaki forrita í sama skjali eða vinnubók. Upphaflega var hægt að nota eitt af þremur forritunarmálum, Julia, Python og R, og af þeim er nafnið dregið, en síðan hafa bæst við fleiri mál. Hægt er að nota Jupyter vinnubækur á eigin tölvu, t.d. með því að setja upp hugbúnað sem nefnist JupyterLab, en það er líka hægt að búa þær til í vafra í kerfinu Google Colaboratory (oft stytt í Colab) sem keyrir í skýinu. Þessar fyrirlestrarnótur miðast við að Jupyter-vinnubækur séu notaðar.

3.1  Notkun Google Colab

Google Colabatory er þjónusta hjá Google til að búa til og vinna með Jupyter vinnubækur. Vinnubækurnar eru geymdar á Google Drive svæði notanda, og forritin í þeim eru keyrð á sérstakri gervitölvu (virtual machine) sem Google leggur til. Skrár sem sem forritin þurfa eða búa til eru geymdar á tímabundnu disksvæði á þesari gervitölvu. Python-þýðandinn er nýlegur (nánar tiltekið útgáfa 3.10.12 í janúar 2024), helstu pakkar eru þegar uppsettir (m.a. þeir sem nefndir eru í kafla 1.2), og auðvelt er að bæta við pökkum eftir þörf.

Til að byrja á vinnubók á Colab þarf fyrst að stofna reikning hjá Google. Síðan má heimsækja colab.research.google.com og velja File–New notebook. Í reitinn sem birtist má slá inn Python-forrit, og svo má keyra forritið með því að smella á þríhyrningstáknið á vinstri brún reitsins eða með því að slá á ctrl/enter. Hægt er að bæta við textareitum og forritsreitum, vista vinnubókina, prenta hana o.s.frv. og eru helstu slíkar skipanir sýndar hér að neðan í kafla 3.4.

Æfing: Google Colab prófun

  1. Farið inn á Google Colab, afritið forritið Forrit 2.2 (þ.e. Collatz) inn í keyrslureitinn og prófið að keyra hann.

  2. Bætið við textareit ofan við keyrslureitinn (ef smellt er á + Text kemur textareitur fyrir neðan, sem hægt er að færa upp með því að smella á upp-örina efst til hægri (). Setjið titil og smá skýringartexta inn í reitinn með því slá inn:

    # Forrit sem reiknar Collatz-runur
    
    $n_{k+1} = 3n_k + 1$ ef $n$ er oddatala<br>
    $n_{k+1} = \dfrac{n_k}{2}$ ef $n$ er slétt tala
    
    Ef nýja talan $n_{k+1} = 1$ þá er hætt að reikna.
    ***
    
  3. Búið til nýjan forritsreit neðst (með + Code) og setjið þar eftirfarandi skipanir:

    n0 = int(input("Sláið inn tölu til að byrja Collatz runu"))
    collatz_runa(n0)
    

    Keyrið reitinn og sláið inn 27 (sem gefur langa röð) og aðrar tölur ef vill.

  4. Búið til nýjan forritsreit og sláið inn:

    tala = 3.4
    viðbót = 5.6
    útkoma = tala + viðbót
    

    Smellið svo á táknið {x} á vinstri spássíu og skoðið innihaldið í breytunum með því að láta bendilinn svífa yfir nöfnunum sem birtast.

  5. Búið til PDF-skjal úr vinnubókinni með því að velja FilePrint og síðan PDF–Save as PDF eða Microsoft Print to PDF eða (More settings)–PDF–Open in Preview (eftir vafra/tölvu). Takið eftir að lárétta línan sem fæst með *** hjálpar til við að aðskilja textareitinn og forritsreitinn.

../_images/colab.jpg

Mynd 3.1: Google Colab viðmótið.

Hér hefur verið smellt á hnappinn í græna juhringnum til að fá efnisyfirlit. Aðrir hnappar sem nefndir eru í æfingunni að framan eru sýndir með rauðum hring.

3.2  Uppsetning JupyterLab á eigin tölvu

Anaconda. Auðveldasta leiðin til að setja upp bæði Python og Jupyter á eigin tölvu er að nota hugbúnaðarpakka sem nefnist Anaconda (sem er stærsta kyrkislanga í heimi, sbr. að Python er líka svoleiðis slanga). Til að flýta fyrir uppsetningu væri hægt að nota minni útgáfu af Anaconda sem kallast Miniconda en leiðbeiningarnar hér miðast við Anaconda. Með því fylgja sjálfkrafa fjölmargir pakkar fyrir vísindalega forritun, þar á meðal flestallir sem fjallað er um í þessum fyrirlestrarnótum (NumPy, Matplotlib, SciPy, Pandas).

../_images/anaconda.jpg

Mynd 3.2: Græn anaconda slanga

Uppsetning Anaconda með nýjasta Python Heimsækið anaconda.com/download, og hlaðið niður uppsetningarforriti fyrir ykkar stýrikerfi og keyrið það.

Keyrsla JupyterLab. Eftir uppsetningu Miniconda/Anaconda má keyra JupyterLab með því að opna terminal-glugga og gefa þar einhverja eftirfarandi skipana:

jupyter-lab
jupyter lab
jupyter-lab skrá.ipynb

Þá opnast JupyterLab í glugga í aðalvafra tölvunnar með möppuna sem byrjað var í sjálfgefna. Síðasttalda skipunin opnar sjálfkrafa eldri vinnubók skrá.ipynb. JupyterLab-glugginn lítur nokkurnveginn svona út:

../_images/jupyterlab.jpeg

Mynd 3.3: Upphafsgluggi JupyterLab

Hér eru tvær undirmöppur og fjórar skrár: tvær vinnubækur eða Jupyter-bækur (auðkenndar með .ipynb, en Jupyter hét áður IPython), eitt Python-forrit (auðkennt með .py) og ein pdf-skrá. Til að búa til nýja vinnubók er smellt á efri Python 3-hnappinn, og þá opnast bókin í nýjum flipa í vafranum. Hún heitir sjálfkrafa Untitled2 en með því að hægri-smella á nafnið (eða smella á File) og velja Rename notebook má skíra hana einhverju skynsemlegra nafni. Eldri bók er opnuð annaðhvort með því að smella á hana í skráalistanum vinstra megin eða tilgreina hana á skipanalínunni eins og sýnt er að ofan.

../_images/jupyterlab-s2.jpg

Mynd 3.4: JupyterLab með opinni vinnubók og aflúsunarhnappi (í rauðum hring)

Aflúsun í JupyterLab Einn kostur við JupyterLab umfram Google Colab er að það er hægt að setja bremsur sem stoppa keyrslu í miðju kafi, og þegar forritið hefur stöðvast má skoða gildi á breytum áður en forritið er sett aftur af stað. Til að virkja aflúsnarham er smellt á mynd af pöddu sem er efst hægra megin í forritsglugganum (sjá mynd), og bremsa er virkjuð með því að smella vinstra megin við línunúmer í forritinu (þar kemur rauður hringur).

3.3  Vinnubækur

Eins og fram kom í æfingunni í kafla 3.1 innihalda vinnubækur reiti (cells) af tvennu tagi, forritsreiti (code), og textareiti (markdown). Í þeim fyrrnefndu eru Python-forrit eða forritsbútar, en í hinum eru fyrirsagnir og skýringartextar sniðnir með umbrotsmálinu (markup language) Markdown. Í textareitina er líka hægt að setja stærðfræðiformúlur sniðnar með formúlumálinu LaTeX og jafnvel myndir ef vill. Forritsbútana er hægt að keyra og fer úttak keyrslu inn í bókina, neðst í viðkomandi forritsreit. Segðin sem er neðst í hverjum reit skrifast sjálfkrafa út, en nota þarf print-fallið til að skrifa út niðurstöður framar í reitnum.

Það er sæmilega auðvelt að læra á notkun hvort sem er Colab eða JupyterLab með því að prófa sig áfram, en líka getur verið gagnlegt að skoða leiðbeiningar á netinu, sbr grein 3.8. Mikilvægustu skipanir beggja labbanna fylgja svo hér í næsta kafla.

Æfing: JupyterLab

  1. Setjið upp JupyterLab á eigin tölvu

  2. Endurtakið æfinguna í kafla 3.1.

  3. Prófið aflúsun.

  4. Prófið einhverjar af skipununum úr næsta kafla.

3.4  Colab og JupyterLab skipanir

Tafla 3.1: Skráaskipanir

Aðgerð

Colab skipun

JupyterLab skipun

Skipta um nafn á vinnubók

Smella á nafnið efst t.v.

Hægri-smella á nafnið efst t.v.
og velja Rename-Notebook
File→Rename-Notebook

Ná í eintak á eigin tölvu

File→Download

(þarf ekki)

Vista undir nýju nafni

File→Save-a-copy-in-Drive og
endurnefna afritið

File→Save-Notebook-As

Vista

File→Save
ctrl/s (⌘s á Mac)

File→Save-Notebeook
ctrl/s (⌘s á Mac)
smellt á diskling

Vista sem PDF

File→Print→Save-as-PDF

File→Export notebook as→HTML,
opna HTML-skjal og velja
File→Print þar.

Tafla 3.2: Keyrsluskipanir

Aðgerð

Colab skipun

JupyterLab skipun

Keyra forritsreit

ctrl/enter
smella á „play“

ctrl/enter
smella á „play“

Keyra forritsreit og fara í næsta reit

shift/enter

shift/enter

Stoppa keyrslu

ctrl/m i
smella á „stop“
Runtime→Interrupt-execution

esc i i
smella á „stop“
Kernel→Interrupt-kernel

Núllstilla Python

ctrl/m .
Runtime→Restart-runtime

esc 0 0
Kernel→Restart-kernel

Tafla 3.3: Reitaskipanir

Aðgerð

Colab skipun

JupyterLab skipun

Setja inn forritsreit
neðan við virkan reit

smella á + Code
esc b

smella á +
esc b

Setja inn textareit
neðan við virkan reit

smella á + Text
esc b ctrl/m m

smella á + og svo Code
→ Markdown
esc b esc m

Færa reit

smella á upp-ör/niður-ör efst t.h.

beita „Drag-and-drop“ á reit

Kljúfa reit

ctrl/m –

ctrl/shift/–
Edit→Split-cell

Sameina reiti

mála reiti → hægri smella
→ Merge-selected-cells

mála reiti → Edit
→ Merge-Selected-Cells

Eyða reit

ctrl/m d
hægri-smella → Delete cell

esc d d
hægri-smella → Delete cells

Sýna textareit sem markdown
(til að breyta)

tvísmella á reit
velja reit og slá á Enter

tvísmella á reit
velja reit og slá á Enter

Sníða textareit

Velja einhvern annan reit

ctrl/enter
smella á „play“

Afturkalla („undo“) reitaskipun

Edit→Undo …
ctrl/m z

Edit→Undo-Cell-Operation
esc z

Endurtaka („redo“) reitaskipun

Edit→Redo …

Edit→Redo-Cell-Operation

Tafla 3.4: Ritilskipanir

Aðgerð

Colab/JupyterLab skipun

Færa bendil

örvar
Home, End (Fn/←, Fn/→ á Mac)
PgUp, PgDn (Fn/↑, Fn/↓)

Eyða

Backspace, Del (Fn/Bcksp)

Velja, klippa, afrita, líma

mála með mús
shift/örvar
ctrl/xcv (⌘/xcv á Mac) -

Velja allt í reit

ctrl/a (⌘/a)

Flytja til hægri, vinstri
(indent, unindent)

tab, shift/tab

Afturkalla („undo“)

ctrl/z (⌘/z)

Endurtaka („redo“)

ctrl/shift/z (⌘/shift/z)

3.5  Vistun vinnubóka á PDF-sniði

Colab. Veljið File → Print, eða sláið á ctrl/p eða ⌘/p (Mac), og svo Destination → Save-as-PDF (PDF → Save-as-PDF á Mac). Þá birtist gluggi þar sem velja má möppu og nafn fyrir PDF-skjalið.

Aðvörun:

Í Safari virðist stundum þurfa að velja File → Print í vafranum en ekki í Colab-flipanum, en í Chrome virðist ekki skipta máli hvoru megin File → Print er valið.

JupyterLab. Í JupyterLab er lús þannig að með File → Print vistast stærðfræðiformúlur ekki rétt. Það þarf að fara krókaleið og velja fyrst File → Export notebook as → HTML og svo þarf að opna HTML-skjalið sem verður til og vista það í PDF með File → Print.

3.6  Vistun vinnubóka í .py-skjal

Colab. Veljið *File → Download → Download .py. Þá birtist gluggi þar sem velja má möppu og nafn fyrir skjalið.

JupyterLab. Veljið *File → Save and Export Notebook As → Executable Script, veljið möppu og nafn og „Save“.

3.7  Markdown og Latex

Finna má ýmsar leiðbeiningar um Markdown-málið á netinu, sbr. grein 3.8. Þar er útskýrt hvernig búa má til fyrirsagnir (með #, ##, ###), skáletra og feitletra (með *texti* og **texti**), búa til lista, setja inn myndir (sem getur reyndar verið dálítið stúss), láréttar línur, stærðfræðiformúlur og ýmislegt fleira.

Texti sem er inndreginn um a.m.k. fjögur bil birtist óbreyttur með jafnbilaletri (monospaced font).

Til að búa til töflu má nota lóðrétt strik til að afmarka dálka og : til að tilgreina vinstri/hægri jöfnun eða miðjun. Hér er einfalt dæmi:

nr |nafn    |aldur
---|:------:|----:
1  |Ari     | 9
2  |Bryndís | 11
...
105|Örn     |8

Stærðfræðiformúlur eru með LaTeX-sniði og settar inn með $ formúla $ eða

$$
formúla
$$

LaTeX getur búið til gríska stafi og allskyns stærðfræðitákn, það setur sjálfkrafa skáletur á breytur og hæfileg bil á milli einstakra hluta í formúlum. Wikibókin um LaTeX-stærðfræði er sæmilega ítarleg, og svo má finna fjölmarga styttri hjálpartexta, t.d. þennan eftir David Chapman. Fallegasti stærðfræðitextinn fæst með því að setja dollaramerki utan um alla stærðfræði, hvort sem það eru flóknar formúlur eða bara „\(x=3\)“ og „\(a\) og \(b\) eru vigrar“ (sem sé $x=3$ og $a$ og $b$ eru vigrar) en ekki „x=3“ og „a og b eru vigrar“.

3.8  Colab- og JupyterLab-leiðbeiningar á netinu

Hægt er að finna ýmsar vefsíður með leiðbeiningum um Google Colab og JupyterLab, t.d.:

(fyrstu tvær eru frá Google sjálfum).

Æfing: Kynning á vinnubókum I

Vinnubókin kynning.ipynb byrjar á tveimur æfingum í notkun Google Colab. Ef smellt er á hana opnast hún hjá GitHub Gist og hægt er að velja Open-in-Colab. Þar má svo velja File–Save a copy in Drive og þá lendir skráin í Google-Drive möppu sem heitir Colab Notebooks, þar sem hægt er að breyta henni og vista breytingar. Náið í þessa skrá og leysið tvær fyrstu æfingarnar, A og B.