Jupyter: Podstawowe informacje

Wstęp

Jupyter jest projektem Open Source, który zdobywa obecnie sporą popularność. Jego historia sięga roku 2011. Wystepuje w trzech smakach:

  • Jupyter Notebook — klasyczne rozwiązanie bazujące na IPython Notebook, pozwalające łatwo edytować kod źródłowy.

  • Jupyter Lab — najnowszy (2018) interfejs ma nieco większe możliwości1.

  • Jupyter Hub — serwer przystosowany do równoczesnej pracy wielu użytkowników.

Na pierwszy rzut oka jest to coś podobnego do Mathematici: interfejs pozwalający tworzyć notatnik oraz prowadzić w nim obliczenia czy wizualizować wyniki. O ile jądrem obliczeniowym Mathematici jest jej jądro o sporych możliwościach obliczeń symbolicznych i numerycznych, to jądrem obliczeniowym Jupytera może być jeden z wielu języków programowania2:

  • głównie Python wraz z bibliotekami NumPy i SciPy,

  • R,

  • Julia,

ale również inne:

  • JavaScript,

  • Java,

  • Scala,

  • Go,

  • C#,

  • Ruby,

  • Kotlin,

  • Haskell.

Ale to nie koniec. Jąder obliczeniowych jest w sumie około stu, a wśród nich zarówno Matlab jak i Mathematica.

Instalacja

Sposób instalacji nie jest przedmiotem niniejszego krótkiego tutoriala. Znaleźć można go na stronach z dokumentacją jupytera3 lub tu. Ale nie tylko tam. Program jest tak popularny, że praktycznie wszędzie tam gdzie sugerują korzystanie z niego podają też sposób instalacji.

Oprogramowanie bez problemu powinno pracować w każdym popularnym środowisku4

Wydaje mi się, że instalacja anacondy może być lepszym rozwiązaniem niż instalacja pojedynczych pakietów za pomocą programu pip. W jednym (sporawym) pakiecie dostaje się to co może być przydatne w trakcie zajęć.

Gdy z miejscem na dysku jest krucho — można instalować minicondę, a później doinstalowywać niezbędne pakiety (w tym jupytera).

W szczególności w Windows (nie ma tam środowiska Python) dostajemy ten język programowania z wielu dodatkowymi pakietami. W systemie Linux (tam python zazwyczaj już jest) Anaconda duplikuje wiele pakietów, ale ułatwia instalowanie nowych. W szczególności do różnego rodzaju testów. Wraz z usunięciem Anacondy otrzymujemy nienaruszone oryginalne środowisko.

Deinstalacja anacondy usuwa wszystko i można o niej zapomnieć.

Uruchomienie w laboratorium 604 B1

W przypadku chęci skorzystania z jupytera (i innych narzędzi związanych z Anacondą) należy jednorazowo wykonać następujące czynności:

  1. Otworzyć terminal (najprościej, na klawiaturze nacisnąć równocześnie trzy klawisze: Ctrl-Alt-T).

  2. W terminalu napisać:

    source /opt/anaconda3/bin/activate
    
  3. A następnie:

    conda init
    

    i zamknąć terminal (na przykład naciskając klawisze Ctrl-D).

Od tej chwili będzie można już korzystać z anacondy i/lub jupytera. Kolejne otworzenie terminala pokaże zmodyfikowany napis zachęty (prompt), który będzie wyglądał jakoś tak:

(base) 123456@piwko012:~$

Dobrym sosobem na rozpoczęcie może być uruchomienie nawigatora, czyli napisanie w terminalu:

anaconda-navigator

(W chwili obecnej nie można instalować dodatkowych pakietów, ani tworzyć środowisk!)

Uruchomienie

Notatnik jupyter pracuje w układzie serwer (jądro) — klient (klientem jest przeglądarka www). Uruchamiamy go wpisując w terminalu5:

 jupyter notebook

Po uruchomieniu jądra, uruchamiana jest przeglądarka i automatycznie kierowana pod adres http://localhost:8888. W przypadku gdy zamkniemy przeglądarkę, wystarczy w tym oknie, w którym uruchomione jest polecenie jupyter notebook nacisnąć równocześnie klawisze [Ctrl-C]. Próba przerwania jupytera zaowocuje zadaniem pytania czy na pewno przerwać, ale dodatkowo wyświetli również informację pod jakim portem szukać jupuytera:

Serving notebooks from local directory: /home/myszka/Dokumenty/teksty/Dydaktyka/Numeryczne/Jupyter
Jupyter Server 2.14.1 is running at:
http://localhost:8888/tree?token=76877f645ec9df7f0b58929678401bf39318a5cf7431d0b7
http://127.0.0.1:8888/tree?token=76877f645ec9df7f0b58929678401bf39318a5cf7431d0b7
Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).

(Niestety) ten token jest niezbędny!

Okno przeglądarki po uruchomieniu notatnika Jupyter
Okno przeglądarki po uruchomieniu notatnika Jupyter

Praca z notatnikiem

Nowy notatnik tworzony jest wybierając opcję „New"

Tworzenie nowego notatnika
Tworzenie nowego notatnika

Korzystanie z notatnika jupyter jest bardzo podobne jak w Mathematici. Wpisujemy polecenia w języku, który rozumie jądro, a następnie naciskamy klawisze Shift+Enter. Jądro wykonuje natychmiast polecenie.

W każdej komórce można oprócz polecenia umieścić albo kod albo tekst. Tekst może być formatowany zgodnie z pewnym podzbiorem standardu markdown6.

Kod musi spełniać wszystkie wymagania używanego języka programowania. Po przełączeniu komórki w tryb Markdown można wprowadzać tekst. Będzie on wprowadzany zgodnie z następującymi zasadami:

  • Aby zacząć nowy ustęp (paragraf) tekstu należy zostawić co najmniej jedną linię pustą.

  • Listy tworzymy w sposób naturalny.

    • Lista numerowana zaczyna się od liczby (i kropki). Lista nienumerowana zaczyna się od punktora (może być nim znak $+$ albo $-$.

    • Pod-lista powinna być „wcięta" w stosunku do pozycji macierzystej.

  • Można korzystać z tabelek, choć ich tworzenie może być (na pierwszy rzut oka) niezbyt proste. Ale można się posiłkować generatorem tabelek.

  • Wzory matematyczne — wprowadzane zgodnie ze standardami LaTeXa. Nie jest on potrzebny (nie musi być zainstalowany) — do wyświetlania używana jest znakomita biblioteka MathJax. Żeby wzory umieszczać — potrzebna jest dosyć elementarna znajomość LaTeXa. Najprostszy wzór wpisuje się jakoś tak:

    $\sum_{i=1}^{\infty} \frac{1}{n}$
    

    żeby dostać coś takiego

    $\sum_{i=1}^{\infty} \frac{1}{n}$

    jeżeli zamiast pojedynczego dolara użyjemy podwójnego, efekt będzie nieco lepszy

    $$\sum_{i=1}^{\infty} \frac{1}{n}$$

    Można skorzystać z jednego z wielu dostępnych w sieci serwisów on-line pozwalających wzór „wyklikać". Może to być, na przykład, Sciweavers.

  • Obrazki wstawia się zgodnie z zasadami Markdown:

      ![tekst altenatywny](jup_ekran.png "Tytuł obrazka")
    

Tak zwany rich content może być bardzo łatwo włączany do notatników Jupyter. Opisuje to dokumentacja.

Najważniejsze skróty klawiaturowe zawiera ściąga.

BArdzo sympatyczne, skrócona dokumentacja jest też tu Jupyter Notebook Cheat Sheets

Dokumentacja

Ponieważ Jupyter jest dziś produktem bardzo modnym, wszędzie można znaleźć (czasami różnej jakości) przykłady tłumaczące zasady pracy z tym programem. W związku z tym tu, dokumentacja nie zostanie umieszczona.

W pewnym sensie najlepszym źródłem informacji jest serwis bazowy.

Przykłady

  1. Najlepszym źródłem przykładów będzie strona umieszczona w serwisie GitHub jupytera.

  2. Warto sięgnąć do książki Python Data Science Handbook której źródła dostępne są jako szereg natatników jupyter umieszczonych (oczywiście) w serwisie GitHub.

  3. Wspomnieć też muszę o serwisie Binder pozwalającym na udostępnianie notatników Jupytera on-line. Jest tam też podstawowy zestaw dokumentacji.

  4. Na potrzeby zajęć przygotowałem kilka przykładowych notebooków. Na razie nie bardzo wiem jak je udostępnić najsensowniej. Zapewne skończy się utworzeniem własnego kąta w GitHubie. Na razie dostępne są (wraz z niezbędnymi plikami) jako jeden plik ZIP7.

    Można je przejrzeć również tu.

    Pokazują one rozwiązanie (lub może raczej dają jakiś rodzaj wędki) kilku problemów związanych z tematyką zajęć.

    1. Aproksymacja:

    2. Interpolacja:

      • Bardzo podstawowe dane na temat interpolacji: Interpolacja.

      • Coś jeszcze o interpolacji nieudolna próba pokazania w jaki sposób można walczyć z niewłaściwym zachowaniem funkcji interpolacyjnych, które „wariują" na końcach przedziału.

    3. Różne:

    4. FFT:

    5. Obliczenia dużej precyzji:

    6. Optymalizacja


  1. Dla początkujących użytkowników zaleca się jupyter notebook. ↩︎

  2. Nazwa Jupyter pochodzi od Ju(lia) + Pyt(hon) + (e)R. ↩︎

  3. https://jupyter.org/install ↩︎

  4. Linux, Window, IOS. ↩︎

  5. Aby otworzyć terminal najprościej nacisnąć równocześnie trzy klawisze Ctrl-Alt-T albo znaleźć terminal na liście aplikacji. ↩︎

  6. Pod tym odsyłaczem można znaleźć podstawowe informacje na temat języka Markdown. Swoją drogą Markdown to bardzo wygodny sposób do przygotowywania nawet dosyć rozbudowanych tekstów. Mimo, że wprowadzanie tekstu jest bardzo proste, plik w całości jest typu ASCII, można sobie pozwolić na wiele. Trochę na temat języka Markdown można również znaleźć na moich stronach↩︎

  7. Ściągnięty plik należy gdzieś rozpakować, a następnie w tej kartotece uruchomić notatnik jupytera. ↩︎

  8. Sugeruję zapoznanie się z odpowiednią instrukcją laboratoryjną. Same dane są tutaj↩︎