Jupyter

Wstęp

Jupyter jest projektem Open Source, który zdobywa obecnie sporą popularność. 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 programowania1:

  • 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 ponad pięćdziesiąt, 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ą jupytera2. 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 środowisku3

Uruchomienie

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

Po uruchomieniu jądra, uruchamiana jest przeglądarka (rys. [jup1]) 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 . Próba przerwania jupytera zaowocuje zadaniem pytania czy na pewno przerwać, ale dodatkowo wyświetli również informację pod jakim portem szukać jupuytera:

(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” (rys. [jup2]). W chwili obecnej (w laboratorium) mamy dwie możliwości (dwa języki) do wyboru: Python 2 i Python 3. Na pierwszy rzut oka różnice między tymi dialektami nie są wielkie, ale nie każdy, nawet najprostszy kod napisany w Pythonie 2 uruchomi się gdy używamy interpretera Python 35.

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. 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, ale 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. 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:

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.

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łęm 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. 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.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:

Instrukcja w postaci jednego pliku…

…jest również dostępna.


  1. Nazwa Jupyter pochodzi od Ju(lia) + Py(thon) + (e)R.
  2. http://jupyter.readthedocs.io/en/latest/install.html
  3. Linux, Window, IOS.
  4. Aby otworzyć terminal najprościej nacisnąć równocześnie trzy klawisze Ctrl-Ałt-T albo znaleźć terminal na liście aplikacji.
  5. Najważniejsze różnice posumowane są na stronie: http://sebastianraschka.com/Articles/2014_python_2_3_key_diff.html. Standardowo dostępny jest program 2to3, który pokazuje różnice ale może też automatycznie dokonać odpowiednich korekt (gdy użyć go z parametrem -w): 2to3 -w a.py.
  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 całkowicie tekstowe, można sobie pozwolić na wiele.
  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.