Jupyter

Проект Jupyter Проект Jupyter является побочным продуктом проекта IPython, который включает независимые интерфейсы Python — в первую очередь блокноты (notebook) — и коммуникационную структуру, которая позволяет отделить внешний интерфейс от вычислительных серверных частей, известных как ядра.

До создания проекта Jupyter, блокноты и базовая структура приложения для них были частью проекта IPython. Однако, поскольку внешний интерфейс для блокнотов не зависит от языка — его также можно использовать с большим количеством других языков, таких как R и Julia, — он был выделен из отдельного проекта, чтобы лучше обслуживать более широкое вычислительное сообщество и избегать предполагаемой предвзятости в сторону Python. Теперь роль IPython заключается в том, чтобы сосредоточиться на приложениях, специфичных для Python, таких как интерактивная консоль Python, и предоставить ядро Python для среды Jupyter.

В среде Jupyter интерфейс взаимодействует с серверными частями (ядрами). Интерфейс может иметь несколько зарегистрированных ядер, например, для различных языков программирования, для различных версий Python, или различных сред Python. Ядро поддерживает состояние интерпретатора и выполняет фактические вычисления, в то время как интерфейс управляет тем, как код вводится и организуется, и как результаты вычислений визуализируются пользователю.

Здесь мы рассмотрим Jupyter QtConsole и интерфейсы для блокнотов.

2: Больше информации по Jupyter доступно по ссылке: http:jupyter.org.

Jupyter QtConsole

Jupyter QtConsole — это расширенное консольное приложение, которое может служить заменой стандартной консоли IPython. QtConsole запускается передачей аргумента qtconsole команде jupyter:

Terminal> jupyter qtconsole

Откроется новое приложение в системной консоли, способное отображать мультимедийные объекты, такие как рисунки и математические уравнения. Jupyter QtConsole также предоставляет механизм на основе меню для отображения результатов автозаполнения, и он запрашивает строки документации для функций во всплывающем окне при вводе открывающей скобки функции или вызова метода. Скриншот Jupyter QtСonsole показан на следующем рисунке:





Jupyter Notebook

Кроме интерактивной консоли Jupyter также предоставляет веб-приложение для блокнотов. Блокнот предоставляет много преимуществ по сравнению с традиционной средой разработки при работе с анализом данных и решением вычислительных задач. В частности, среда блокнота позволяет писать и запускать код, отображать выходные данные, произведенные кодом, а также документировать и интерпретировать код и результаты: все в одном документе. Это означает, что весь рабочий процесс анализа записывается в один файл, который впоследствии можно сохранить, восстановить и использовать повторно. Напротив, при работе с текстовым редактором или IDE код, соответствующие файлы данных и рисунки, а также документация распределяются по нескольким файлам в файловой системе, и для поддержания такого рабочего процесса требуются значительные усилия.

Jupyter Notebook оснащен богатой системой отображения, которая может отображать мультимедиа, такие как уравнения, рисунки и видео, как встроенные объекты в блокноте. Также возможно создавать элементы пользовательского интерфейса с HTML и JavaScript, используя систему виджетов Jupyter. Эти виджеты можно использовать в интерактивных приложениях, которые связывают веб-приложение с кодом Python, который выполняется в ядре IPython (на стороне сервера). Эти и многие другие функции Jupyter Notebook делают его отличной средой для интерактивных и грамотных вычислений. Для запуска среды Jupyter Notebook аргумент notebook передается команде jupyter.

Terminal> jupyter notebook

Это запускает ядро ноутбука и веб-приложение, которое по умолчанию обслуживает веб-сервер через порт 8888 на локальном хосте, доступ к которому осуществляется через локальный адрес http://localhost:8888/ в веб-браузере . По умолчанию при запуске jupyter notebook в браузере открывается страница с панелью инструментов. На панели инструментов перечислены все блокноты, доступные в каталоге, из которого был запущен Jupyter Notebook, а также простой обозреватель каталогов, который можно использовать для навигации по подкаталогам относительно места, где был запущен сервер, и для открытия блокнотров в нем. На рисунке показан снимок экрана веб-браузера и страницы с панелью инструментов Jupyter Notebook:





Нажатием кнопки «New» создадим новый блокнот и откроем его на новой странице в браузере. Вновь созданный блокнот имеет имя Untitled или Untitled1 и т.д. Блокнот можно переименовать нажав на поле с заголовком в верхней части страницы. Файлы Jupyter Notebook сохраняются в формате JSON со специальным разрешением ipynb. Файл Jupyter Notebook не является чистым кодом на Python, но при необходимости код на Python можно легко выделить из блокнота используя либо меню File | Download as | Python или с помощью утилиты nbconvert.





3: Это веб-приложение по умолчанию доступно только локально из системы, в которой было запущено приложение для ноутбука.

Jupyter Lab

Jupyter Lab — это новая альтернативная среда разработки из проекта Jupyter. Она объединяет интерфейс Jupyter Notebook с файловым браузером, текстовым редактором, командной оболочкой и консолью IPython:





Среда Jupyter Lab объединяет в себе множество преимуществ среды для блокнотов и сильные стороны традиционных IDE. Доступ к консолям оболочки и текстовым редакторам в одном веб-интерфейсе также удобен при работе на сервере Jupyter, работающем в удаленной системе, например в вычислительном кластере или в облаке.

Типы ячеек

Основное содержимое блокнота, расположенное под строкой меню и панелью инструментов, организовано как ячейки ввода и вывода. Ячейки могут быть нескольких типов, тип выбранной ячейки можно изменять используя меню в панели инструментов. Наиболее важные типы:

Редактирование ячеек

Используя меню и панель инструментов, ячейки можно добавлять, удалять, перемещать вверх и вниз, вырезать и вставлять и т.д. Эти функции также связаны с сочетаниями клавиш, которые удобны и экономят время при работе с ноутбуками Jupyter. В ноутбуке используется двухрежимный интерфейс ввода: режим редактирования и командный режим. В режим редактирования можно войти, щелкнув ячейку или нажав клавишу ввода на клавиатуре, когда ячейка находится в фокусе. Находясь в режиме редактирования, содержимое ячейки ввода можно редактировать. Выход из режима редактирования осуществляется нажатием клавиши ESC или нажатием Shift-Enter для выполнения ячейки. В командном режиме стрелки вверх и вниз можно использовать для перемещения фокуса между ячейками, а ряд сочетаний клавиш сопоставляется с основными действиями по манипулированию ячейками, доступными через панель инструментов и меню.

Таблица 1. Клавиши

Сочетание клавиш Описание
b Создать ячейку ниже текущей
a Создать ячейку выше текущей
d-d Удалить текущую ячейку
от 1 до 6 Ячейка с заглавием раздела (heading) уровня от 1 до 6
x Вырезать текущую ячейку в буфер обмена
c Скопировать текущую ячейку в буфер обмена
v Вставить ячейку из буфера обмена
m Преобразовать тип ячейки в Markdown
y Преобразовать тип ячейки в Code
Up Выбрать предыдущую ячейку
Down Выбрать следующую ячейку
Enter Войти в режим редактирования ячейки
Escape Выйти из режима редактирования ячейки
Shift-Enter Выполнить ячейку
h Показать окно помощи со списком сочетаний клавиш
0-0 Перезапустить ядро
i-i Прервать выполнение ячейки
s Сохранить блокнот

Во время выполнения ячейки блокнота номер ячейки обозначается звездочкой (In [*]), а индикатор в правом верхнем углу страницы сигнализирует о том, что ядро IPython занято. Прервать выполнение ячейки можно через меню Kernel | Interrupt или сочетанием клавиш i-i в командном режиме (т.е., дважды нажать клавишу i). В таблице table:1 представлены наиболее популярные сочетания клавиш командного режима Jupyter Notebook.

Ячейки Markdown

Одна из ключевых возможностей Jupyter Notebook заключается в том, что ячейки с кодом и ячейки с результатом могут быть дополнены документацией, содержащейся в текстовых ячейках. Текстовые ячейки имеют тип Markdown. Входной текст преобразуется с использованием языка разметки Markdown. Markdown разработан как легкая система набора текста, которая позволяет преобразовывать текст с простыми правилами разметки в HTML и другие форматы для более удобного отображения. Правила разметки разработаны так, чтобы быть удобными для пользователя и читаемыми, как в текстовом формате. Например, фрагмент текста можно выделить курсивом, окружив его звездочками (*text*), можно сделать полужирным, окружив двойными звездочками (**text**). Markdown также позволяет создавать нумерованные и маркированные списки, таблицы и гиперссылки. Расширение Markdown, поддерживаемое Jupyter, заключается в том, что математические выражения можно набирать в LaTeX с помощью библиотеки JavaScript LaTeX MathJax.

Ниже приведем краткое описание синтаксиса Markdown.

Выделение.

Одинарные звездочки используются для выделения курсивом

это *выделенный* текст

Двойные звездочки используются для выделения полужирным

это **очень выделенный** текст

Код в строке.

Используйте функцию `printf()` для вывода.

Ссылки.

Инлайн ссылки

Это простая [ссылка](http://rukeba.com/) в тексте.
Это [ссылка](http://rukeba.com/ "Титул") с аттрибутом title.

Сноски

Это [ссылка][1] в справочном стиле.
...
...
[1]: http://rukeba.com/ "Необязательный титул"

Чтобы веб-адрес в тексте стал ссылкой его нужно обрамить < и >

По ссылке <http://python.org> находится сайт.

Изображения.

![alt-текст](http://example.com/image.jpg "Необязательный титул")

или в справочном стиле:

![alt-текст][2]
...
...
[2]: http://example.com/image.jpg "Необязательный титул"

Абзац.

<пустая строка>
Текст параграфа. Может быть
разбит на несколько строк.
<пустая строка>

Разрыв строки.

Что бы вставить перевод строки без начала нового параграфа, в конец нужно добавить два или больше пробелов.

Текст параграфа.<пробел><пробел>
Этот текст будет с новой строки.

Код.

Отступ в четыре пробела или один таб генерирует блок кода:

<пробел><пробел><пробел><пробел>print 'Hello, World!'

Горизонтальная линия.

* * *

или так:

***

или так:

------

Таблица.

| A | B | C |
|---|---|---|
| 1 | 2 | 3 |
| 4 | 5 | 6 |

Заголовки.

# Заголовок первого уровня H1

Цитаты.

> Это
> многострочная
> цитата

Списки.

Ненумерованный:

* красный
* зеленый
* синий

Нумерованный:

1. Первый
2. Второй
3. Третий

LaTeX.

Строчные формулы:

$\LaTeX$

Выключеная формула (с новой строки и по-центру):

$$
\LaTeX
$$

или

\begin{env}
...
\end{env}

Здесь env LaTeX окружение для формул: equation, eqnarray, align и т.д.

Ячейки типа Markdown могут также содержать код HTML, и интерфейс Jupyter Notebook будет отображать его как обработанный HTML.

Больше информации о MathJax и Markdown доступно на страницах проектов: http://www.mathjax.com и http://daringfireball.net/projects/markdown/.