Jupyter notebooks v humanitních vědách

21. 9. 2020 Pavla Martinková

Jupyter notebooks patří k tzv. open research notebooks/open lab notebooks a jsou součástí otevřené vědy. Jejich historie sahá do 70. let, kdy Donald Knuth představil paradigma literate programming. Fernando Pérez pak v souvislosti s Jupyter notebooks zavedl pojem literate computing.

Open Science facets as a beehive

V humanitních vědách je základním publikačním výstupem obvykle próza – článek nebo monografie. Pro některé vědecké výstupy je důležitou součástí také počítačový kód. Jupyter notebooks umožňují publikovat a prezentovat zároveň prózu i kód. (viz Dombrowski et al., 2019)

Jejich použití napomáhá dokumentovat celý výzkumný proces, aby mohl výzkum kdokoliv reprodukovat s použitím stejných dat a metod. V podstatě jde o dokumentaci kódu, ale ne na úrovni „tato funkce funguje takto“, ale „tuto funkci jsem použila, aby…, protože...“. Budoucím uživatelem takovéto dokumentace může být krom výzkumníkových kolegyň a kolegů také on sám v budoucnu, kdy už mohl zapomenout určitá specifika.

První podobná prostředí se objevila koncem 80. let v oblasti matematiky. Dnes jich existují desítky, jako komerční i volně dostupná řešení. Jupyter je jedním z volně dostupných. Pod tímto názvem je známý od roku 2014, od roku 2011 existoval jako IPython (díky tomu mají soubory formátovou příponu .ipynb).

Tomáš Hampejs k výhodám Jupyter notebooks dodává: „Spojují v sobě tři dimenze programovaní (kód, výsledek a dokumentace) do jednoho celku. Jsou designované na rychlé hraní s kódem a skrze kód – ale zároveň dokážou vyrobit sekvenční proces, který je plnohodnotným výsledkem (řeší nebo automatizuje nějaký problém) i jeho dokumentací. Ono hraní si s kódem člověk ocení nejen když se učí, ale třeba když pomocí programátorských nástrojů „objevuje řešení“ problému, nebo dělá předběžnou analýzu dat. Jejich vlastnosti je také skoro předurčují, aby se staly výukovou pomůckou vědeckého programovaní.“


Tomáš Hampejs je v současnosti odborným pracovníkem v Centru pro digitální výzkum náboženství na Ústavu religionistiky, jako součást projektu DISSINET. Ve svém výzkumu se věnuje mj. kognitivní vědě o náboženství a síťové analýze. Živil se také jako programátor.


Základy fungování

Prostředí funguje pro více programovacích jazyků. Samotný název skrývá tři, pro které byl vyvíjen: Julia, Python a R. Proč zrovna Python? Je nejpoužívanějším jazykem v oblasti data science (podle průzkumu z roku 2018) a jedním z nejpoužívanějších nástrojů v digital humanities.

Kaggel Data Science survey 2018
Tools mentioned in the proceedings of the annual ADHO conferences

Jupyter umožňuje editovat jednotlivé buňky (cells), které mohou obsahovat text (formátovaný v jazyce Markdown) nebo kód ve vybraném programovacím jazyce. Vše lze editovat, zobrazit a v případě kódu provést v jednom prostředí.

Tomáš Hampejs upřesňuje: „Pokud slouží něčemu více než hraní a zkoušení tak vlastně vždy odrážejí nějakou sérii oddělitelných operací, jež tak jak jsou za sebou tvoří kýženou transformativní sekvenci (pipeline). Výhoda je, že s kódem v buňkách si lze hrát odděleně, je to inženýrsky příjemné prostředí, které vlastně nabízí rozhraní jak pro práci s detailem, tak celkem. Jsou určeny pro konkrétní problém aplikovaného programování spíš než třeba na vyvíjení knihoven nebo složitějších programů (i transformativních procesů). Jsou to také uzavřené celky, a tedy kód v nich nemůže sloužit jako součást jiného kódu.“

Příklady použití

Jupyter notebooks používají například v projektu DISSINET: „V několika Jupyter „sešitech“ máme prototypy transformujících automatů, které vyrábí z jedné podoby dat druhou. Například ze seznamu osob a seznamu jejich výskytů v textu připraví data pro sociální graf reprezentující jejich propojení. Je ale nutné dodat, že Jupyter notebooks tady plní funkci média pro tvorbu a užití programového skriptu, samy nic zvláštního k běhu programu nepřidávají. Jsou zkrátka pohodlná technologie, ve které píšete kód. Takový kód bych chápal spíš jako rozhovory s problémem než přímo program. Vžité slovo je skript – relativně malý a úzce zaměřený doménově aplikovaný (sloužící velmi konkrétnímu problému) kus kódu.“

Vybrané nástroje

  • Pro práci s Jupyter notebooks slouží například aplikace Jupyter Notebooks (všimněte si velkého písmene) nebo Jupyter Lab. Jupyter lze nainstalovat jako pomocí příkazové řádky: $ pip3 install jupyter, Notebooks i Lab jsou také například součástí data science balíčku Anaconda.
  • Výsledný notebook lze exportovat do různých formátů. Jako statický výsledkem také do PDF nebo HTML. Staticky prohlížet lze sešity také v nástroji v nbviewer.
  • Dynamicky, tedy včetně spouštění kódu, lze využít například Binder nebo publikovat online pomocí Voilá! jako samostatnou webovou aplikaci. (Nejedná se o úplný výčet možností.)
  • Je možné využít také kolaborativní online prostředí Google Colaboratory. Pro spolupráci s kolegy jej využívá také Tomáš Hampejs: „Za normálních okolností člověk ke spuštění booku potřebuje nainstalovaný software na vlastním počítači, který dokáže spustit jupyter server a konkrétní booky interpretovat. Booky v cloudu všechno hodně zjednodušují – celý sešit si může otevřít, spustit a výsledků si užívat kdokoliv komu dáte přístup. Pokud cloud podobu Jupyter notebooks neznáte, určitě Google Colab vyzkoušejte.“

Tipy pro práci s Jupyter notebooks

  • Práce s příběhem, který vysvětluje a dokumentuje celý proces výzkumu pro budoucí publikum. Tímto publikem může být také samotná autorka.
  • Publikovat spolu se samotným výzkumným notebookem také soubory readme, license a requirements (jaké balíčky a v jaké verzi jsou vyžadovány pro spuštění).
  • Notebook logicky strukturovat – například rozdělit notebook do sekcí, používat jednotlivé buňky pro jednotlivé kroky a nepsat buňky delší než 100 řádků.
  • Spolu s notebookem zveřejnit ve vybraném repozitáři také použitá data a odkazovat na ně pomocí DOI.
  • Možnost publikovat výsledek na GitHubu, vystavit pro prohlížení a spuštění v Binderu a získat DOI repozitáře Zenodo.
  • Existuje velké množství rozšíření, které ještě navyšují jejich schopnosti – Tomáš Hampejs doporučuje například variable inspector, který dává okamžitý přístup ke všem živým proměnným a jejich tvaru/obsahu.

Použité zdroje


Více článků

Přehled všech článků

Používáte starou verzi internetového prohlížeče. Doporučujeme aktualizovat Váš prohlížeč na nejnovější verzi.

Další info