Пиксель арты по клеточкам — 58 фото
Пиксельный арт
Пиксельная природа
Обои из пикселей
Пиксельные фигуры
Пиксель арт как нарисовать кровь
Пиксель арт
Pixel арты
Сур пиксель арт
Пиксель разноцветные клеточки
Санс Undertale Пацифист
Рисунки в клетку крутые
Природа в стиле пиксель арт
Пиксельные рисунки
Крутые рисунки по клеточкам
Смешные пиксели
Атмосферные пиксель арты
Пиксель арт Звездные войны
Пиксельное рисование
Пиксель арт
Кепка пиксель арт
Китти пиксели
Рисование по клеточкам в тетради джойстик
Пиксель арт покемона шайни
Панельки пиксель арт
Рисунки по клеточкам фломастерами
Разбойник пиксель арт
Рисунки фломастером по пикселям
Пикачу из пикселей
Пиксель арт 24×24
Лягушка по клеткам
Рисунки по клеточкам в тетради цветные
Рисунки по клеточкам пиксель
Арт в клеточках тетради пиксель
Пиксельные рисунки
Пиксель арт разнообразие
FNAF Pixel Art схемы
Новогодние Рождественские пиксельные рисунки
Mario Pixel обои
Человек распадается на пиксели, арт
Пиксельные картинки на обои
Пиксель арт Джейк
Яичница по клеточкам
Рисунки по клеточкам андроид
Пиксель арт легкий
Пиксель арт покемона Фларион
Undertale: рисуем Санса поэтапно | Blog frankenstein
Проходи милейший друг, тебе тут рады!
Недавно я наткнулась на несколько интересный статей про пиксельную игру «Undertalе» и решила создать поэтапный урок рисования Санса. Поэтому сначала прочитай описание персонажа, а дальше начинай творить и, пожалуйста, не забудь поделиться статьей в VK, Facebook и на других социальных сетях.
Санс – это персонаж ролевой игры «Undertale» и старший брат Папируса. Является одним из важнейших и ключевых героев, который обладает недюжинной силой и способностями. Хотя в конце игры
Поэтапный урок рисования Санса из «Undertale» состоит из 21 простых и быстрых шагов. Их ты сможешь выполнить благодаря особым инструментам, которые нам будут нужны на протяжении всей работы:
- Простой карандаш;
- Цветные карандашики;
- Ластик;
- Точилка;
- Альбомный лист бумаги
1. И как всегда начнем, пожалуй, с прорисовки важной части тела – головы. Но для начала рекомендую мысленно разделить альбомный лист на 4 горизонтальные части. Первая предназначена как раз для головы.
2. От головы Санса спускаемся немного вниз и рисуем вспомогательный скелет тела. На этом шаге поэтапного урока нарисуем только полоски для шеи, рук и плеч. Для чего все это? Так в дальнейшем нам будет легче с детализацией.
3. Продолжаем прорисовывать вспомогательные линии. Теперь спускаемся еще ниже и проводим простым карандашом прямую линию, которая заканчивается коротким горизонтальным отрезком. Вот мы и нарисовали что-то вроде позвоночника и бедер.
4. От двух сторон бедер, которые мы нарисовали на предыдущем этапе урока рисования Санса
5. Возвращаемся обратно к голове нашего персонажа из игры. Перед тем, как начать рисовать важные составляющие лица, нам предстоит добавить еще пару вспомогательных линий на лице. Чертим сначала горизонтальную, а затем и вертикальную полоску, что делит лицо пополам.
6. Ну, вот и начнут приносить плоды наши важные зарисовки с 1 по 5 шаги. Итак, над горизонтальной полоской, не заходя за нижнюю грань, рисуем глаза прямоугольной формы и внутри них добавляем зрачки.
7. А здесь все очень просто. Тебе всего-навсего стоит дополнить лицо ямкой над глазами и носом треугольной формы. Так как Санс это скелет, а это следует тому, что у него не должно быть бровей и каких-либо мимических морщин.
8. Хочу заметить, что Санс из «Undertale» не только стильно выглядит, но и на лице всегда отражается невозмутимость и вечная ухмылка. Поэтому давай опустимся чуть-чуть от носа вниз и поэтапно нарисуем широкую улыбку.
9. А как же зубы? Да, верно, что у Санса нет бровей и волос, но есть зубы. Простым карандашом разделяем рот четырьмя полосками, что, в конечном счете, и являются зубами. Потом добавляем с левой стороны от нас ямку возле веска.
10. Здорово, ты невероятно крут! С головой мы закончили, а значит пришла пора прорисовывать одежду нашего любимого персонажа из игры «Undertale». Но не будем спешить и сейчас нарисуем поэтапно
11. Вот и пройдена половина пути поэтапного урока рисования. На этом шаге мы продолжаем рисовать одежду и различные детали на теле Санса. От каждой стороны капюшона проводим линии и рисуем рукава. Смотри на картинку под текстом и внимательно следи за моими действиями.
12. Получилось нарисовать рукава? Я надеюсь, что ты справился, ведь там не нужно добавлять пальцы, а это для меня самый сложный этап прорисовки героев мультфильмов и фильмов. Ладно, проехали, на этот раз нам нужно отделить куртку от футболки. Для этого мы начертим вертикальные линии от каждого уголка капюшона и закончим горизонтальными линиями.
13. Ты не забываешь стирать по ходу вспомогательный скелет, который отслужил свое и больше нам не понадобиться? Хорошо, после уборки ненужных деталей мы идем дальше и добавляем маленькие, но важные части на куртке – замок, карманы, шнурки.
14. Верхняя часть туловища Санса готова. Пришла пора немного спуститься и дорисовать все остальное. Здесь мы только нарисуем штаны, которые нанесены над вспомогательным скелетом ног. Санс хоть и старше Папируса, но кажется, что все наоборот (это я так, мысли вслух).
15. Хоть мы и хорошо нарисовали поэтапно штаны, но все-таки они выглядят пока что полотном. Тогда мы еще крепче возьмемся за простой карандаш и изменим ситуацию. Нужно лишь добавить пару складок и узоры по бокам в виде толстых линий.
16. Не забыл, юный художник, что Санс это скелет из ролевой игры «
17. Давай-давай, собери волю в кулак и сделай еще малую долю усилий! Санс носит свободный наряд, состоящий и толстовки, шортов и тапочки. А что, ведь такая одежда максимальна удобная и модно выглядящая. Дорисовываем обувь!
18. Наконец-то мы нарисовали нашего персонажа. Теперь переходим к поэтапным и правильным урокам раскрашивания. Начнем, пожалуй, как велит традиции с головы. Нам понадобится серый цветной карандаш или простой карандаш. Этим цветом наносим с левой и правой стороны тени. Глаза будут черные, не считая белых бликов.
19. Опять серый цветной карандаш рвется в бой! Не убирай его в сторону. Сосредоточенно закрашиваем капюшон и футболку под курткой Санса серый цветом, регулируя силу нажатия, ибо здесь должны сочетаться темно-серый и светло-серый цвета.
20. Ура-а-а, ну слава нарциссам! Меняем цветной карандаш, что у нас в руке на синий цвет. Здесь тоже нужно быть предельно внимательным, ведь нам снова нужно регулировать силу нажатия на карандашик. Но для правой стороны уже можно взять другой цвет (голубой) и смело раскрашивать.
21. Вот мы и подошли к финалу. Берем из пачки цветных карандашей черный, розовый и опять таки серый цвета. Черным цветом закрасим штаны, не считая полосок, розовым будут тапочки, а серый цветной карандаш нанесем в виде теней на носки, полоски и ноги.
Лови мою огромную благодарность за то, что прошел этот поэтапный урок рисования
Как нарисовать мышку по клеточкам?
Ответ эксперта:
Меня частенько спрашивают каким образом быстро рисовать по клеточкам мышку. Добавил как раз подробную инструкцию об этом.Вопросы о том, как красиво нарисовать мышку по клеточкам:
Alder
Нарисуй ваз 2107 пж???Разум
прикольноСтахорский Оман
7:38 САМЫЙ ЛУДШИЙ КАДРКотренко Черник
Если я не ошибаюсь ты сегодня снял 2 видео,да?Хана
Если учишь рисовать стрелки волосы, то убери волосы бесит всегда падает на глазаХарлан Атнашева
Круто!!!Ганельский Айни
Красота!!!Фанис
Такая мимишная получилась!!?????Личай Цион
Аудиа забыла про то что в слове пица две буквы z pizzaКэк
73 красивый парнишка получился молодчинкаВсеслав
Ты очень мастерски ресуешь по клеточкам и ты хороший блогер желаю тебе всего самого наилучшего! Я живу в Владивостоке!Маклин
Хамса это номер пять на иврите и арабском. Это означает пятерня — ладонь.Джордж
Всем приветик!!! Надеюсь Вам понравился это урок рисования!!! Прошу прощения, что не озвучиваю, в данный момент у меня проблемы с микрофоном, но скоро все исправлю???? Спасибо за понимание!!! Всех целую????Султанбек Устаков
ОНА НЕ ЕДИНОРОГ!!!!!!!!!!!Гордаш Сергий
Супер, класс!Никки Паршкина
Нарисуй кольта из бравлаФахраддинов Василёк
Дуже гарно у вас вийшло намалювати!!!Timon
Я вас обожаю!Trowbridge
Здравствуйте. Я новичок, я вас правильно поняла?Нужно купить НВ, 2В,6В,или 5В.А набросок каким лучше делать? Заранее спасибоУстин
читы в реальной жизниЕсик Кармановский
поч?м??шМерген
я прямо заслушался. не только картина получилась удивительная, но и история созадания прекрасна.Дин Бакштанская
Санс и фнафКир
зачем вставать?..может сделать подложку под наклоном, что бы не прыгать..Hurst
Это нереально! Рассказвайте подробнее пожадуйста, как чайникам))Саргис
вы так красиво рисуете!! я тоже нарисовала, а можно как-то вам рисунок отправить?Буд
ШЕДЕВР!????????????Эльмир
Я имею ввиду, которая после интроTanner
Как у художника все просто получается,одним движением,удивительно!!!!Ава Гернеза
Класс! Нужно будет попробовать в кореле исполнить.Симеон Тебелев
Наташа ваши видео просто вдохновляют! Спасибо вам большое))Инкар Горозеева
Голубое платье похоже на начнушку!Вернал Белобаев
Крута зделал вощеДиня
Топ! Больше нету слов!Ciri
Как такие люди могут так божественно рисовать Ответ: потому что у некоторых людей как я, руки растут не из того места которого надоAmbros
*Как обычно топчик :)*Касьян
Я даже лист двигаю как ты?Салем
Спасибо, было интересноЕрема
Очень хорошее и интересное видеоТакер
У меня один вопрос-какую вы бумагу используете?Александро
Нарисуй дарт мода из звёздных военМадонна Дильдикова
КЛАСС. настоящая землянка хвостатогоНапишите свой отзыв
Стройные средства
(Предупреждение: приближается невежественная напыщенная речь)
Как и все, кто когда-либо им пользовался, мне нравится IPython. ноутбук. Это не только потрясающе продуктивная среда для работы. в, это также самое мощное оружие евангелиста Python арсенал (соси, Матлаб).
Я также думаю, что нетрудно представить себе мир, в котором научные статьи все это просто грамотные программы. А ноутбук, наверное, один из лучшие инструменты для грамотного программирования на любом языке.В встраивание в блокнот уценки и LaTeX / MathJax просто фантастическое.
Но у него есть одна слабость как грамотного инструмента программирования. В типографика по умолчанию уродлива, как грех.
Есть несколько проблем, но две основные легко исправить.
Длинные линии
Безусловно, самая большая проблема заключается в том, что текст и ячейки ввода расширяются до 100%. ширины окна. Большинство людей открывают окна браузера шире чем удобная ширина чтения, поэтому вы получите длинные, трудночитаемые строки текста в ячейках уценки.
А для кода было бы неплохо, чтобы кодовая ячейка вас отпугивала из длинных очередей. Ячейки переменной ширины — нет. Я 80-символьный анальный удерживающий, и даже у меня проблемы с чтением в блокноте когда линия слишком длинная.
Когда вы пишете сценарий в текстовом редакторе, есть много предыдущего кода. в видимом окне, чтобы ваш глаз почувствовал «правое поле» кода. (Не говоря уже о том, что многие редакторы укажут 80- или столбец любого символа, так что вы точно знаете, когда сломать).Но в записной книжке, ваш код обычно разбивается на более мелкие блоки и эти блоки перемежаются с выходными и другими ячейками. Это трудно получить визуальное представление о правильном поле.
Уродливые шрифты
Текстовые ячейки и ячейки уценки обычно отображаются в Helvetica или Arial. Helvetica — это, конечно, хороший шрифт, но он не совсем подходит для абзацы текста (сколько книг, журналов, газет или академических документы с основным текстом, набранным шрифтом Helvetica?). И в сочетании с маленьким размером и длинными строками затрудняет чтение и просто уродливый.Я не думаю, что должен что-то говорить об Arial.
Как я использую блокнот — с ячейками уценки, используемыми для длинных отрезков пояснительного текста и интерпретации результата — лучше иметь текстовые ячейки отображаются шрифтом с засечками. Таким образом он выделяется из кода и выводных ячеек побольше. Шрифты с засечками также имеют более отчетливый курсив, и лучше интегрироваться с математикой LaTeX / MathJax.
Ячейки кода и выходные ячейки интерпретатора отображаются независимо от вашего значения по умолчанию моноширинный шрифт. Обычно это Courier или Courier New.Это хорошо, но на самом деле это 21 век — мы можем сделать намного лучше.
Обновление: еще одна вещь
Я понимаю, что внес еще одно изменение, которое считаю важным. В
в упорядоченном списке по умолчанию в записной книжке используются римские цифры (I, II, III,
…). Мне почти всегда нужны арабские цифры (1, 2, 3,…). Мы
можно изменить это в файле renderedhtml.css
на
.rendered_html ol {стиль списка: десятичный; маржа: 1em 2em;}
(Также проверьте комментарии, чтобы узнать о других и, как правило, более эффективных способах
изменения.) Вы также можете изменить подуровни ol ol
, ol ol ol
и т. Д.
В идеале я хотел бы иметь вложенные числа 1.1, 1.1.1, но это не
просто, поэтому я не реализовал его. Если у кого-то есть советы, я бы
рад их слышать.
Исправление (как минимум локально)
(Предупреждение: я не знаю, что делаю. Не вносите никаких изменений, или любые другие, без предварительного резервного копирования файлов.)
( Обновление : Матиас Бюссонье имеет информативный пост показывая правильный способ внесения этих изменений.Если вы внесете изменения в CSS Я опишу ниже, делайте так, как он советует, а не через файлы, которые я опишите здесь.)
Ноутбук обслуживается через браузер, поэтому его интерфейс в основном
только HTML, Javascript и CSS. Типография и внешний вид
Ноутбук почти полностью управляется файлами CSS, расположенными там, где находится IPython.
хранится в вашей системе. Это будет отличаться в зависимости от вашей ОС и вашего Python.
распределение. На моем Mac с дистрибутивом AnacondaCE
таблицы стилей расположены
в / Пользователи / cvogel / anaconda / lib / python2.7 / сайты-пакеты / IPython / frontend / html / notebook / static
.
Там есть несколько подпапок, в том числе одна под названием / css
и / кодовое зеркало
. Вы также можете просмотреть файлы таблиц стилей, выбрав
запустить блокнот и использовать инспектор браузера. Если твой
браузер (например, Chrome) позволяет редактировать таблицы стилей на лету в
инспектор, вы можете относительно безопасно опробовать изменения.
Вот изменения, которые я внес в свою систему, чтобы устранить проблемы, указанные выше. Сначала в папке / css в файле с именем notebook.css
1. Установите более узкие ячейки ввода кода (код, выходящий за пределы ширины будет невидимым). Я пытаюсь установить это примерно на 80 символов плюс несколько буфер. В CSS нельзя указать ширину как количество символов, поэтому возможно, вам придется поэкспериментировать, чтобы увидеть, какая ширина ex-width работает с вашим шрифтом.
div.input { ширина: 105ex; / * около 80 символов + буфер * / ... }
2. Исправление уценки / текстовых ячеек. Я вношу изменения в шрифт, ширину и межстрочный интервал. Я использую Charis SIL, шрифт, основанный на классическом Bitstream Устав, и в свободном доступе здесь.Укорочение линий и добавление некоторый межстрочный интервал (от 120% до 150% размера пункта обычно является хорошим диапазоном) для удобочитаемости.
div.text_cell { width: 105ex / * вместо 100%, * / ... } div.text_cell_render { / * семейство шрифтов: "Helvetica Neue", Arial, Helvetica, Geneva, sans-serif; * / семейство шрифтов: "Charis SIL", serif; / * Делаем текст с засечками без кода. * / высота строки: 145%; / * добавлен межстрочный интервал текста. * / ширина: 105ex; / * вместо 'наследовать' для более коротких строк * / ... }
3. Добавьте стили, чтобы указать размеры заголовков.
/ * Устанавливаем размер заголовков * / div.text_cell_render h2 { размер шрифта: 18pt; } div.text_cell_render h3 { размер шрифта: 14pt; }
Затем в подпапке `/ codemirror / lib есть файл с именем codemirror.css. Здесь мы можем изменить шрифт, используемый для кода, оба ввода и вывод интерпретатора. Я использую Консолас.
.CodeMirror { семейство шрифтов: Consolas, моноширинный; }
Очевидно, что эти изменения коснутся только записных книжек, которые вы просматриваете на своем локальном компьютере. машина, и любой, кто просматривает ваши ноутбуки на своей машине или nbviewer увидит стиль по умолчанию.
Вот снимки этих изменений до и после:
Исправляем (глобально?)
Так это все мило, правда? И приятно, что мы можем настройки для ноутбука, но, знаете ли, большое дело.
Я бы сказал, что это на самом деле более важно, чем просто эстетическая переделка. Ноутбук IPython становится универсальным средством исследования, сотрудничество, публикация, распространение и репликация данных анализ. Как я уже сказал выше, я считаю вполне разумным, что записные книжки могут заменить большой класс научных статей.Но делать что он должен работать так же хорошо, как и все фрагментированные инструменты, которые исследователи в настоящее время используют. В противном случае люди будут держать вставка их кода и результатов в документы Word и Latex. В другом Словом, ноутбук должен работать не просто как интерактивная среда, но также как статический документ. Команда IPython понимает это, что почему существуют такие инструменты, как nbconvert.
Люди делают с ноутбуком удивительные вещи. Типографика должна побуждайте людей читать их, а не только в качестве дополнительных комментариев.
Инструменты часто сильно связаны с эстетическими характеристиками, которые являются второстепенными по отношению к самому инструменту. ggplot может создавать диаграммы, которые выглядят как хотите, но когда люди думают о ggplot, они думают о серый фон и палитра Color Brewer. И пока основные продажи точка ggplot — это абстракция процесса построения графиков, я думаю именно характерный и привлекательный стиль его графиков сделал его завоевать успех так успешно. На противоположном конце спектра, когда люди думают о графике Stata, они думают об этом и вздрагивают.И Latex будет набирать документы любым сумасшедшим шрифтом, который вы хотите, но в все на уме, Latex ⇔ Computer Modern (хорошо это или плохо). Значения по умолчанию для дизайна важны: они маркетинговые и поощряют хорошее привычки ваших пользователей. Было бы обидно, если бы люди думали о ноутбук IPython и изображайте длинные строки небольших, разделенных одним интервалом Helvetica Neue.
Это безумно мощный инструмент. Было бы здорово, если бы было красиво тоже, и эта цель кажется в высшей степени достижимой.
7 основных советов по написанию с помощью Jupyter Notebook | by Shinichi Okada
Если вы хотите создать макет из двух столбцов, вы можете попробовать этот метод.
Скопируйте и вставьте следующее в одну из ячеек.
Lorem ipsum dolor sit amet, conctetur adipiscing elit. Maecenas quis nunc pulvinar urna faucibus tincidunt ut vestibulum ligula. Sed placerat sollicitudin erat, quis dapibus nibh tempor non.
Id | Синтаксис | Описание
- |: ---------: |: -----------:
1 | Заголовок | Что-то здесь
2 | Подробнее здесь | Текст
Lorem ipsum dolor sit amet, conctetur adipiscing elit.Maecenas quis nunc pulvinar urna faucibus tincidunt ut vestibulum ligula. Sed placerat sollicitudin erat, quis dapibus nibh tempor non.
$$
\ begin {align}
{x} & = \ sigma (yx) \ tag {3-1} \\
{y} & = \ rho x - y - xz \ tag {3-2} \\
{x + y + z} & = - \ beta z + xy \ tag {3-3}
\ end {align}
$$
Затем вам нужно добавить стили CSS в одну из ячеек. (Это включает коды из «Как распечатать из Jupyter Notebook без блоков кода», которые вы можете найти позже в этой статье.)
%% html
Перейдите к печати браузера, выберите Файл> Печать, и вам нужно выбрать пустое поле в верхних и нижних колонтитулах страниц.
Необходимо выбрать пустое поле в верхних и нижних колонтитулах страниц.Фото: Шиничи ОкадаТеперь вы можете распечатать эту HTML-страницу или экспортировать ее в PDF без кода и верхних / нижних колонтитулов.
Выберите «Открыть в режиме предварительного просмотра» или «Сохранить как PDF». Фото: Shinichi Okadasave - Сохранение записной книжки, исключая выходные ячейки, без потери «рабочей записной книжки» выходных ячеек
Чтобы обсудить это, я думаю, что проще всего начать с двух определений. (Если есть стандартная терминология, прокомментируйте.)
- Рабочий блокнот : открытый блокнот в памяти.
- Дисковая записная книжка : записная книжка, сохраняемая на диск.
Обычно, когда мы редактируем блокнот foo.nb
, это рабочий блокнот. Когда мы сохраняем ноутбук, весь файл foo.nb
копируется на диск, что делает его дисковым ноутбуком.
Ранее было отмечено, что по разным причинам желательно сохранять в записной книжке все, кроме выходных ячеек, которые увеличивают размер файла (особенно с графикой).
Ответ дает метод удаления выходных ячеек при закрытии окна, в котором просматривается записная книжка. Обратите внимание, это означает, что рабочая записная книжка могла быть сохранена в дисковую записную книжку (надеюсь) много раз в течение сеанса со всеми выходными ячейками . После закрытия окна и сохранения все выходные ячейки удаляются, а рабочая записная книжка сохраняется (теперь без выходных ячеек) в дисковую записную книжку.
В первую очередь, в целях контроля версий, я бы не хотел, чтобы дисковый ноутбук когда-либо содержал выходные ячейки.
В комментариях к ответу было предложено следующее решение:
SetOptions [
EvaluationNotebook [],
NotebookEventActions ->
{
{"MenuCommand", "Сохранить"}:>
FrontEndExecute [FrontEndToken ["DeleteGeneratedCells"]]
}
];
Это работает, за исключением того, что рабочая записная книжка удаляет все свои выходные ячейки при сохранении на дисковой записной книжке. Это нежелательно.
Есть ли способ сохранить рабочий блокнот без вывода на диск ноутбука?
Обратите внимание, что было бы лучше, если бы в ответе не использовались отдельные дисковые записные книжки (если они не были временными и очищенными), что, на мой взгляд, проще, но в некоторой степени упускает суть.
Глава 5 Экосистема Jupyter Notebook
Поддержка языков: ядра
Система Jupyter поддерживает более 100 языков программирования (называемых «Ядра» в экосистеме Jupyter), включая Python, Java, R, Julia, Matlab, Octave, Scheme, Processing, Scala и многие другие. Вне box, Jupyter будет запускать только ядро IPython, но дополнительные ядра может быть установлен. Языковая поддержка продолжает добавляться сообществом разработчиков ПО с открытым исходным кодом, и лучший источник актуального списка - это вики-страница, поддерживаемая проектом: https: // github.com / jupyter / jupyter / wiki / Jupyter-kernels. Эти проекты разработаны и поддерживаются сообществом с открытым исходным кодом и существуют в различные уровни поддержки. Некоторые ядра могут поддерживаться огромным количеством активных (и даже платных) разработчиков, в то время как другие может быть любимым проектом одного человека. При тестировании нового ядра мы предлагаем изучить сообщество пользователей ядра и документацию, чтобы посмотрите, есть ли у него соответствующий уровень поддержки для вашего (и вашего студентов) используют.
Гибкость ядраJupyter позволяет инструкторам выбрать правильный язык для конкретного контекста.Например, инструкторы могут использовать Python для обучения программированию, при переходе на R для обучения статистике, а затем, возможно, Scala для обучения обработке больших данных. Независимо от выбранный язык, интерфейс Jupyter остается прежним. Таким образом, некоторые когнитивная нагрузка может быть уменьшена при использовании нескольких языков в пределах или на разных курсах (например, пользовательский интерфейс остается неизменным между студентов цифровых гуманитарных и биологических курсов). Однако студенты часто ценят постоянное использование одного и того же языка в рамках курса.
Использование ноутбуков Jupyter
При использовании ноутбуков Jupyter на проекторе данных или большом экране монитора в классе, мы рекомендуем дать студентам конкретные инструкции о значении пользовательского интерфейса ноутбука. Это не совсем интуитивно понятен.
Первый и самый важный компонент ноутбука - это ячейка . Действительно, все содержимое записной книжки состоит из только клетки. Эти ячейки могут принимать одну из двух форм: текст или код.Мы в следующем разделе будет описана разработка записной книжки; однако здесь мы определяем некоторые тонкие, но важные компоненты кодовой ячейки.
Ячейки кода состоят из трех областей: область ввода , область отображает область, а выводит область. Область ввода обозначена
приглашение In []:
слева от ячейки. Между скобками
приглашение В
может быть одним из трех элементов: числом, звездочкой или
пустой.Число указывает, что эта ячейка была выполнена, и
значение числа указывает порядок выполнения. Например,
обычно, после выполнения первой ячейки после открытия записной книжки,
его приглашение будет читать In [1]:
.
Наконечник Pro
При обучении с помощью тетрадей вам часто нужно ссылаться на ячейку мое имя. Вы можете ссылаться на ячейку по ее приглашению для ввода номер. Однако имейте в виду, что это число изменится, если вы снова исключите ячейку, иначе у студентов могут быть другие числа если они тоже создают свою копию записной книжки.Лучше способ ссылки на ячейку может заключаться в ссылке на текст прямо над ячейка не изменится, пока вы выполняете ячейки. Для ссылки на строки кода см. в следующем разделе «Советы и рекомендации». Перед выполнением ячейки область номера подсказки ввода будет
пустой. Таким образом, вы можете сразу сказать, что эта ячейка не была
выполнено еще. Также может случиться так, что если приглашение ввода
если в нем есть номер, значит, ячейка уже использовалась в прошлом. Однако,
ячейка могла не работать во время этого сеанса, и, следовательно,
вывод может показывать старые результаты.Рекомендуем запустить из меню: Ячейка
, Все выходы
, Очистить
в начале
презентация. Это инициализирует все входы ячеек в пустое состояние.
Во время выполнения ячейки приглашение ввода будет содержать
звездочка. Если кажется, что прошло слишком много времени, а вы все еще видите In [*]:
ваш код может быть в бесконечном цикле, или вы потеряли
связь с ядром. Возможно, вам придется прервать или перезапустить
ядро. Это обсуждается ниже.
Наконец, важно разделять области отображения и вывода.
под ячейкой ввода. Разница между этими двумя областями невелика.
и сбивает с толку, но в некоторых случаях очень важен. Дисплей
область зарезервирована для любого элемента, созданного для просмотра кодом. Тот
включает простой текст (например, оттиск ("привет, мир")
) или цифры из
участок. Область вывода зарезервирована для элементов, которые «возвращает» ячейка.
Вот почему во многих записных книжках вы можете увидеть присвоение переменной
за которым сразу следует переменная, например:
В этом примере вы не увидите вычисленное значение, если вы распечатываете его в области отображения или возвращаете значение.Здесь мы возвращаемся это как последнее значение ячейки.
Имейте в виду, что нижняя часть ноутбука на экране или
монитор может быть не виден студентам в задней части комнаты. Делать
убедитесь, что размер шрифта достаточно большой, и что вы не слишком быстро
при демонстрации кода, к которому у учащихся нет доступа. Мы тоже
рекомендую скрыть панель инструментов и заголовок Jupyter, чтобы получить больше
место для реальной записной книжки (выберите Переключить заголовок
и Переключить вид
в меню Jupyter View
).
Создание блокнотов Jupyter
Прежде чем приступить к написанию тетрадей для вашего курса, мы рекомендуем поискать в Интернете соответствующие курсы. Аналогичный курс, для которого инструктор уже сгенерировал могут существовать записные книжки, которые вы можете использовать или адаптировать для своего курса. Авторы блокнотов часто рады сотрудничать с открытым исходным кодом образовательные ресурсы или их ресурсы используются другими инструкторы. Следующие разделы посвящены Python просто потому, что в настоящее время это язык с самым большим Jupyter поддержка функции.
Доступ к документации в записной книжке
Одной из лучших особенностей качественных библиотек является их документация, какие студенты и другие пользователи, вероятно, будут регулярно консультироваться. Из ячейка записной книжки, клавиша TAB выполняет автозаполнение (или дает подсказки для завершения) а SHIFT-TAB открывает полную документацию. Аналогично, используя знак вопроса после метода или функции вызовет документацию после запуска ячейки, как показано на рисунке 5.1.
Вопросительный знак, используемый после метода или функции, вызывающего документацию после выполнения ячейки.
Использование этой функции в классе во время живого кодирования или объясняя, как работает код, студенты чувствуют себя комфортно эффективной работы с библиотеками.
Магия
Magics - это мета-команды, которые работают только в Jupyter и позволяют
пользователь для доступа к функциям, специфичным для языка / ядра. Например,
Ядро IPython предоставляет ряд волшебных возможностей, которые могут быть полезны при
разработка блокнотов Jupyter с использованием Python в качестве основного
язык. Эти
задокументированный
и здесь мы остановимся только на некоторых из них.Многие другие магии
доступны для разных ядер, но они специфичны для Jupyter, поэтому
не может использоваться в автономном скрипте на этом языке за пределами
Юпитер. В некоторых случаях вы можете экономно использовать магию, чтобы
избегайте обфускации этих мета-команд с фактическими командами в
язык, который вы преподаете. Магия всегда начинается с одного %
для однострочных команд или %%
для применения команды к
целая ячейка. Некоторая магия может использоваться с одинарной или двойной %
, но
некоторые не могут.
Примеры
Matplotlib - это стандартный выбор для визуализации. В Jupyter magic
% matplotlib
позволяет результирующим числам отображается в записной книжке:% matplotlib inline
производит статические изображения встроены в ноутбук, а% matplotlib notebook
создает интерактивные изображения (с масштабированием, панорамированием и т. д.).% run
magic позволяет запускать внешние скрипты (и другие записные книжки), захватывает вывод и отображает его в записной книжке, е.g.,% запустите my_script.py
. Магия% запуска
- это один из ответов на вопрос «как импортировать одну записную книжку в другую? »% времени
magic умножает на выполнение следующего за ним выражения Python, например,% time sum (range (1000))
.Магия
% времени, магия
аналогична% времени
, но она выполняет выражение несколько раз и сообщает среднее значение время исполнения.Сброс
% Магия
удаляет все пользовательские переменные вместе с вводом и выход.У магии часто есть «флаги», следующие за командой Unix. шаблон. Например,% reset -s
- это мягкий сброс, который удаляет только пользовательские переменные. Эти команды могут быть полезны, чтобы избежать проблем. с проблемами внеочередного исполнения.Магия отладки
%
используется после остановки кода из-за исключение (т. е. «произошел сбой программы»). Введите отладку%
магии сразу после аварии, и вы попадете в среда, которая вызвала проблему.Оттуда вы можете исследовать переменных и найдите причину проблемы.
Хорошим примером магии, воздействующей на все содержимое ячейки, является
магия %% HTML
, заставляющая интерпретировать ячейку как HTML
и правильно отрисованы. Вы также можете использовать магию для вызова других
языков при запуске ядра IPython. Например, вы можете запустить
Код R из ноутбука IPython с помощью магии %% R
.
Наконечник Pro
В ядре IPython вы также можете использовать магию оболочки%
.Это
часто сокращенно !
и может запускать и возвращать результаты из
оболочка / терминал. В IPython вы также можете смешивать магию с обычным
Код Python. Например, файла =! ls
будет использовать ls
(список
files) в терминале, верните список и установите
Переменная Python помещает
в этот список.Ноутбуки под контролем версий
Хранение ноутбуков под контролем версий - отличный способ не только отслеживать изменения в вашем контенте, но также для разделяя это.В курсе, в котором участвуют несколько человек на разработку тетрадей по курсу с использованием контроля версий в сочетании с платформой, такой как GitHub, позволяет отслеживается и предоставляет средства связи для проверки новых вклады или описание запрошенных разработок для нового задания, активность и т. д. Еще одним преимуществом использования контроля версий является то, что некоторые сервисы будут предоставлять визуализированные просмотры записных книжек что вы обнародовали. GitHub показывает обработанный версия записной книжки, а не текст ASCII, которым является записная книжка. состоящий из.Могут возникнуть некоторые подводные камни с рендерингом LaTeX, поскольку платформы не всегда отображают ноутбуки так же, как они появляются в активном интерфейсе Jupyter.
Следует упомянуть несколько предостережений, чтобы держать ноутбуки под контролем версий.
Вывод кода, включая изображения, сохраняется
в репозитории, если вы не очистите вывод
перед фиксацией изменений. Это может затруднить просмотр изменений,
поскольку изменения в выводе будут обнаружены, даже если на самом деле ничего не
изменено содержание. Отслеживаемые записные книжки также могут стать большими, если
вывод отслеживается.Даже при очистке вывода, просмотр
изменения могут быть неудобными из-за формата записной книжки (записные книжки
являются текстовыми файлами, а формат файла представлен как
JSON).
Сообщество активно разрабатывает инструменты, упрощающие использование контроля версий с записными книжками Jupyter; один из таких инструментов - nbdime
(см. вставку).
nbdime nbdime.readthedocs.io/
nbdime включает набор инструментов для просмотра изменений («различий») и объединение изменений в записных книжках Jupyter.Вы можете сравнить версии ноутбука с помощью терминала, просмотрите изменения, богато отображенные на браузер и слить разными способами. Поскольку nbdime понимает структуру документов записной книжки, это может сделать умное «различие и слияние »решений.Еще один способ улучшить контроль версий - экспортировать записную книжку Jupyter в документ с уценкой, например, с помощью инструмента jupytext. Затем вы можете просматривать различия обычным способом для текстовых файлов.
Тестирование ноутбуков
Перед распространением ноутбуков, особенно если вы работаете с несколькими участниками в материал курса, тестирование записные книжки, прежде чем они будут розданы студентам или использованы в живом демо может помочь смягчить неожиданные ошибки.Как минимум, вы можете протестировать что ноутбук работает чисто сверху вниз при перезапуске ядро и запуск всех ячеек сверху вниз. Это можно сделать из меню (Restart + Run all).
Хотя для этого требуется немного больше настроек, тесты можно запускать автоматически.
с помощью службы непрерывной интеграции, такой как TravisCI
(https://travis-ci.org). Это потребует
выполнение всей записной книжки через командную строку, например jupyter nbconvert --ExecutePreprocessor.enabled = True --to = html my_notebook.ipynb
запустит записную книжку (так же, как нажатие
«Перезагрузить + запустить все»), а затем преобразовать его в HTML. Эти услуги могут
быть подключенным к GitHub, чтобы в любое время, когда записные книжки
изменено, тесты запускаются автоматически. Упрощение этого процесса
область, которая находится в стадии разработки в сообществе открытого исходного кода. В
упаковка
https://github.com/opengeophysics/testipynb
обеспечивает простой способ тестирования ноутбуков.
Основные библиотеки Python
Цель этого раздела - познакомить с некоторыми из наиболее широко используемых использовали пакеты в экосистеме Python.Как упоминалось ранее, более 100 ядер поддерживают разные языки программирования в Jupyter. Но Python является обычным выбором во многих дисциплинах из-за его большое сообщество разработчиков ПО с открытым исходным кодом, которое разрабатывает и поддерживает экосистему из более чем 150 000 программных пакетов.
Базовая библиотека Python (https://docs.python.org) содержит основные данные типы, такие как списки и словари, а также основные функции такие как арифметические операторы и простые анализаторы файлов. Большинство задач могут быть достигнуто с помощью ядра Python.Однако их часто легче сделать с помощью библиотеки более высокого уровня. Это особенно относится к научные вычисления с Python. Среди огромного количества пакетов в экосистеме Python NumPy, Scipy, Matplotlib и Pandas являются одними из наиболее часто используемых. Хороший ресурс для знакомства с этими библиотеками это Scipy Lecture Notes https://scipy-lectures.org/.
- Numpy (http://www.numpy.org/) является фундаментальным библиотека для числовых и научных вычислений с Python.Это содержит структуры данных для числовых массивов, инструменты для линейных алгебра, возможности случайных чисел и многое другое.
- SciPy (https://docs.scipy.org/) предлагает разнообразный набор функций для научных вычислений, таких как как оптимизация, интерполяция, статистика и обработка сигналов. Это также включает фундаментальные константы из многих дисциплин, таких как скорость света, а также структуры данных для разреженных матрицы.
- Матплотлиб
(https://matplotlib.org/) - это ядро
графическая библиотека для Python и может использоваться в записной книжке
с ноутбуком
% matplotlib
или% matplotlib inline
cell магия. - панд (https://pandas.pydata.org/) предоставляет ресурсы для анализа данных и гибкие структуры данных для помеченных табличных данных.
Дополнительная тема: расширения
Есть много расширений, добавленных сообществом, которые добавляют функциональность в ноутбуки Jupyter. Расширения отличаются от отображения автоматизированного оглавление для записной книжки, или код prettify, или скрытие / отображение клетки раствора. Вот ссылка, как установить и включить расширения: https: // jupyter-contrib-nbextensions.readthedocs.io/en/latest/install.html
Вот список набора расширений, которые входят в комплект все вместе: https://jupyter-contrib-nbextensions.readthedocs.io/en/latest/nbextensions.html
Создание пользовательских расширений - это способ расширить или настроить Jupyter на добавить возможность, которая в настоящее время недоступна с текущим расширения или из коробки. Эти расширения могут быть нацелены на конкретное ядро. Вот инструкции, как создать и установить пользовательские расширения: https: // jupyter-notebook.readthedocs.io/en/stable/exnding/frontend_extensions.html
На рисунке X показано, как Google Collaboratory, один из многих инструментов взаимодействовать с ноутбуками Jupyter, использовать возможности Jupyter расширения для индивидуального взаимодействия и представления.
Google Collaboratory использует расширения Jupyter для настройки Jupyter для своих пользователей. Значок запуска / воспроизведения слева от ячейки кода создается с использованием расширений. Этого нет в стандартном программном обеспечении Jupyter. TensorFlow - это библиотека для создания экспериментов по машинному обучению на Python.
Набор расширений для Jupyter постоянно развивается. Педагоги исследуют новые и интересные методы использования записных книжек в педагогика. Хотя список текущих расширений слишком длинный, чтобы список, вы можете интерактивно испытать некоторые из наиболее полезных расширения через это живое Папка-переплет (Binder подробно описан в следующей главе). Этот живой ноутбук демонстрирует следующее:
- Включение номеров строк в ячейках кода (упрощает обращение к строке кода)
- Расширение сворачивания кода (скрыть блоки кода, чтобы привлечь внимание)
- Расширение заблокированных и замороженных ячеек (предотвращение изменений ячеек)
- Расширение для улучшения пользовательского интерфейса сообщений об ошибках
- Расширение «черепаха» (прорисовывает холст в блокноте)
- Расширение блочного программирования
Расширение блочного программирования (называемое Jigsaw) позволяет пользователям программа с использованием перетаскиваемых блоков кода, которые могут быть интегрированы с другие ячейки в Jupyter Notebook (см. рисунок).Преимущества (и недостатки) языков с блокировкой - активные темы исследования в исследованиях в области компьютерного образования (см., например, отличный блог исследований в области компьютерного образования, особенно посты на блочных языках).
Пример включения Jigsaw, блочного расширения, в Jupyter Notebook. Расширение позволяет пользователю собирать блоки кода, которые затем могут быть переведены на Python или Java и выполнены.
Советы и хитрости
Напоминания
Если вы используете одну записную книжку как отдельное упражнение в традиционный класс (т.е., это единственная вычислительная составляющая ваш класс), тогда полезно иметь несколько ячеек вверху этого блокнот, в котором рассказывается, как перемещаться по блокноту и как вставить ячейки и т. д.
Обратная связь
Как получить обратную связь от студентов в интерактивном сеансе, чтобы увидеть если студенты выполнили упражнение?
Низкотехнологичное решение - дать студентам стикеры с разными цвета, один из которых означает «готово», а другой - «нужна помощь», что они могут приклеить к их компьютерам.После этого инструктор может быстро посмотрите вверх, чтобы узнать о состоянии класса и решить как поступить.
Проецирование Slack или аналогичной чат-группы на экран и наличие решения для копирования и вставки студентов (при условии, что они являются короткими функциями) - это хороший способ показать всем в классе решения друг друга. А Положительным аспектом наличия нескольких проектов для учащихся является то, что он может показать множество способов решения проблемы. Это дает возможность рассказать о читабельности решений и их эффективность.Обратной стороной является то, что в большом классе огромный объем сообщения могут сделать его подавляющим. Вместо этого опрос можно использовать для собирать ответы учащихся и предоставлять обратную связь инструктор. Nbgrader или travis-CI также могут быть здесь вариантами, требующими студенты должны отправить заполненный код, где он оценивается автоматически. Однако это потребует дополнительной настройки и может занять некоторое время. время для завершения.
Объяснение каждой ячейки
Рассмотрите возможность перемещения комментариев для блока кода в ячейку уценки либо непосредственно над, либо под ячейкой кода.Комментарии в уценке ячейка часто читается намного лучше и дает вам большую гибкость в обсуждение или описание кода. Однако короткие комментарии в блоке кода все еще может быть полезным.
Как структурировать ячейки кода
Сколько кода нужно поместить в ячейку? Вы разработаете свой собственный стиль написания блокнотов со стажем. Обычно вам нужно уменьшите количество строк, чтобы было легко следить за ними, и вы можете иметь полезные комментарии над ячейкой. Однако мы рекомендуем поставить код, который «объединяется как значимая единица» в одну ячейку.Для Например, если у вас есть строки кода, которые сильно зависят от каждого другое, тогда вы можете захотеть соединить их вместе. В качестве примера, рассмотрим две строки кода: одна открывает файл, а вторая - читает данные из файла. Вероятно, стоит поставить эти в одну ячейку, чтобы они всегда выполнялись все вместе. В противном случае учащийся может столкнуться с ошибками, если выполнит ячеек независимо друг от друга во второй раз (например, данных больше нет).
В частности, нарушение зависимостей между ячейками - вот где большинство путаницы с использованием ноутбуков возникают из-за новых пользователей.Для Например, если вы измените имя переменной (без перезапуска ноутбук), то следующие ячейки кода могут продолжать использовать старую имя переменной (и значение). Позже, при повторном запуске ноутбука, ноутбук может неожиданно выйти из строя, потому что старая переменная no больше существует. Иногда это называют «скрытым состоянием. проблема." Это открытая исследовательская проблема, и исследователи изучение различных возможных решений. Например, поиск Интернет для «графа зависимостей jupyter» или «потока данных jupyter ноутбук.”
Наконечник Pro
Вы можете легко разделить ячейку на две части под курсором, используя нажатие клавиши УПРАВЛЕНИЕ
+ SHIFT
+ -
. Вы также можете объединить несколько ячеек
с SHIFT
+ м
. Оба они также доступны в меню.
под Редактировать
.С другой стороны, часто бывает полезно разделить строки кода. где вы хотите предоставить студенту место для интерактивного добавления ячеек и исследуйте состояние в этой конкретной точке процесс.Задавать зондирующие вопросы сократовским методом - это очень полезный метод для привлечения читателя и поощрения его стать больше, чем читателем. Студенты, естественно, не умеют вставлять ячеек и исследуйте предметы в записной книжке. Вам нужно будет явно научите этому навыку. Фактически, обучение студентов тому, как эффективно ткать кода в их собственных записных книжках является важным компонентом обучение с тетрадями.
Индивидуальный стиль
Создатели новых записных книжек часто пытаются централизованно управлять форматированием заголовки, уравнения и другие текстовые элементы.Например, а не используя стандартный заголовок уценки, создатель может переконструировать заголовки с использованием стилей HTML. Это может создать две проблемы:
Визуализация уценки для ноутбуков может измениться, и ваша форматированный заголовок HTML может со временем не сохранять тот же вид.
Заголовки, созданные с использованием уценки, могут использоваться инструментами записной книжки, например, автоматическое создание оглавления.
Наша рекомендация - не поддаваться желанию изменить стиль и просто используйте представления по умолчанию.Если ты хочешь сделать настройки (например, если вы хотите раскрасить определенные ячейки), вы можете использовать CSS.
Длина тетрадей
Авторы тетрадей иногда делают тетради очень длинными, и многие темы и разделы. Разделы и ячейки записной книжки в настоящее время не легко повторно использовать в смысле копирования / вставки для смешивания внутри записной книжки содержание. Пока эта функция не станет доступной, мы рекомендуем Авторы составляют короткие автономные записные книжки по коротким темам. Этот позволяет другим авторам записных книжек смешивать и сопоставлять записные книжки для создания учебный план.
Попался
Язык программирования \ (\ neq \) Jupyter
Обучение класса полностью с помощью Jupyter может дать учащимся смысл что именно так проводятся все вычислительные исследования. В в частности, студенты могут запутаться, думая, что программирование требуется ноутбук, вместо того, чтобы понимать, что он только один способ взаимодействия с определенным языком. Этот момент должен периодически разъясняться. Хороший способ усилить это - показать как взять функцию, которая была разработана и отлажена в notebook и вырезать и вставить его в сценарий (например, файл с расширением.ру для Python), а затем импортируйте его в записную книжку, чтобы восстановить функциональность. Также интегрированная среда разработки (IDE), Spyder, есть плагин (https://github.com/spyder-ide/spyder-notebook) который позволяет отображать записные книжки вместе со сценариями Python и терминал python, который может быть полезен для демонстрации этой дихотомии.
БлокнотJupyter отображается на панели окна в Spyder.
Перезапуск, перезапуск, перезапуск…
Часто студентам может потребоваться остановить вычисление, и это может быть осуществляется нажатием кнопки «Прерывание» в панель инструментов.Тем не менее, учащиеся также должны знать, как перезапустить ядро в записной книжке и что это значит. Есть несколько случаи, когда студентам может понадобиться это сделать. Иногда студенты написать код, который может зайти в бесконечный цикл. Визуальные подсказки, которые записные книжки в этом случае неуловимы, и учащиеся могут не осознавать это и не понимаю, почему блокнот не отвечает. В ситуаций живого кодирования, может быть полезно продемонстрировать это студентов и покажите им, как перезапустить ядро и продолжить.
Второй случай, когда может потребоваться перезапуск ядра. к тому, как записная книжка хранит состояние вычислений. Нам нравится думаю, что, поскольку ноутбук расположен линейно, состояние всегда будет отражать то, что произошло бы, если бы ноутбук был бежать от начала до этого момента. Однако обычно работают в тетрадь вышла из строя, например, если студенты задают вопрос о некоторый предыдущий пример. Если переменная была изменена в последующем ячеек, то его значение может не отражать того, что вы ожидаете при повторном запуске ячейка ранее в записной книжке.Перезагрузка ядра иногда бывает единственное решение.
Гигиенический блокнот
Многие ошибки можно устранить, разработав ноутбуки, которые будут устойчивое к инкрементному и нелинейному исполнению. Главный принцип - свести к минимуму побочные эффекты выполнения ячейки и проявить себя несколько иначе на разных языках; наши предложения здесь будут иметь отношение к Python и может нуждаться в адаптации для других языков. Ноутбуки, как правило, должны иметь возможность выполнять последовательно, например, с помощью «перезапустить ядро и запустить все ячейки».(Исключение составляют случаи, когда записная книжка намеренно неполная для живого кодирования или упражнения для студентов, см. nbgrader или инструкции по упражнениям для получения дополнительной информации элегантные способы справиться с этим.) Переменная мутация - самый распространенный способ в котором ноутбук может работать со сбоями при выполнении ячеек в нелинейным способом (например, в ответ на вопросы учащихся или когда сравнение и противопоставление различных методологий). Иногда это мутация случайна, через фиктивные переменные, не предназначенные для имеют значение за пределами ячейки, в которой они использовал.Их объем можно ограничить, поместив их в функцию, даже если эта функция вызывается только один раз. Переопределение функций может часто можно избежать, параметризуя желаемую функциональность, как это было бы обычно выполняется при разработке библиотеки (хотя это может быть отвлекающий дизайн программного обеспечения для начинающих программистов). Функция определения не должны зависеть от переменных из их охват. При изменении ячеек для демонстрации и форматирования оценки во время урока полезно либо скопировать ячейку, либо изменить / выполнить так, чтобы соответствующая реализация оставалась в наличии при переходе к другим ячейкам, где он может быть использован.Кроме того, вы может свести к минимуму эти проблемы, сгруппировав код в одной ячейке, которая всегда следует выполнять последовательно, потому что код внутри ячейки всегда будет последовательным.
Реактивные, воспроизводимые, совместные: эволюция вычислительных ноутбуков
В этом году исполняется десять лет с момента запуска IPython Notebook. Инструмент с открытым исходным кодом, теперь известный как Jupyter Notebook, стал чрезвычайно популярным инструментом для анализа данных, с миллионами записных книжек, размещенных на сайте совместного использования кода GitHub.
Вычислительные записные книжки объединяют код, результаты, текст и изображения в одном документе, что дает то, что Стивен Вольфрам, создатель программного пакета Mathematica, назвал «вычислительным эссе». И независимо от того, написаны ли они с использованием Jupyter, Mathematica, RStudio или любой другой платформы, исследователи могут использовать их для итеративного исследования данных, общения, обучения и многого другого.
Но вычислительные записные книжки также могут сбивать с толку и способствовать плохой практике программирования. И ими сложно делиться, сотрудничать и воспроизводить.Исследование 2019 года показало, что только 24% из 863 878 общедоступных блокнотов Jupyter на GitHub можно было успешно повторно запустить, и только 4% дали те же результаты (JF Pimentel и др. в IEEE / ACM 16th International Conference on Mining 2019 Программные репозитории (MSR) 507–517; IEEE, 2019).
«Ноутбуки - это беспорядок», - говорит Анита Сарма, специалист по информатике из Университета штата Орегон в Корваллисе, изучающая взаимодействие человека с компьютером. «Вы пишете что-то, вы сохраняете за собой старый твердый код, и трудно понять, какие ячейки выполнять в каком порядке, потому что вы пробовали разные вещи.”
Но все больший набор платформ и инструментов направлен на то, чтобы сгладить эти острые углы. Некоторые делают записные книжки «реактивными», так что код повторно запускается при изменении программных переменных; другие сосредоточены на совместной работе и контроле версий. Но все они предоставляют исследователям инновационные способы изучения, документирования и обмена данными с коллегами и всем миром.
Для Сергея Пруда записные книжки стали выходом для документирования генетики пандемии. Понд, вычислительный биолог из Университета Темпл в Филадельфии, штат Пенсильвания, создал около трех десятков документов, связанных с SARS-CoV-2, вирусом, вызывающим COVID-19.«Моя настройка по умолчанию», - говорит он, - «написать интерактивную записную книжку и отправить ее своим соавторам, чтобы они могли поиграть с данными, [чтобы] они могли сразу увидеть, что там есть».
Платформа для ноутбуков, которую он выбрал, называется Observable. Он базируется в Сан-Франциско, штат Калифорния, и был основан в 2019 году двумя выпускниками Google: Майком Бостоком, разработчиком библиотеки D3 JavaScript, которая поддерживает многие интерактивные визуализации данных в Интернете сегодня, и Мелоди Мекфессел. Веб-система компании позволяет пользователям создавать, совместно использовать и повторно использовать сложные интерактивные визуализации, написанные на JavaScript, языке программирования, понятном веб-браузерам.По словам Мекфесселя, «сотни тысяч» пользователей делают это каждый месяц.
В отличие от Jupyter, который передает код внешнему «ядру», которое его выполняет, код Observable запускается в самом браузере. По словам Бостока, это делает платформу быстрой и отзывчивой. Но поскольку JavaScript не является типичным языком науки о данных, исследователи часто используют Observable не для обработки данных, а для визуализации.
Pond, например, использует Observable для обмена красочными картами, графиками, структурами белков и выравниванием последовательностей, которые представляют данные, которые он генерирует в другом программном обеспечении.Модульная структура Observable означает, что другие программисты могут легко применять эти визуализации к своим собственным данным. Но в ноутбуках Pond есть еще одна ключевая особенность Observable: реактивность.
Реактивные записные книжки, такие как Observable, обновляются по мере изменения их содержимого.
Предположим, у вас есть блокнот Jupyter, который рисует линию. В одной ячейке кода вы определяете наклон и точку пересечения y ; в следующем вы рисуете график. Структура записной книжки позволяет кодировщикам вернуться к предыдущей ячейке, чтобы изменить наклон после того, как график был отрисован.Но это изменение не приводит к автоматическому перерисовке фигуры; пользователь должен вручную повторно выполнить ячейку, которая отображает его.
Этот рабочий процесс может привести к «проблемам состояния», когда вывод записной книжки не отражает его код - как, например, может случиться, если пользователь удалит ячейку, определяющую переменную, после ее выполнения. В 2018 году Джоэл Грус, в то время инженер-программист в Институте искусственного интеллекта Аллена в Сиэтле, штат Вашингтон, осветил это поведение и возникшую путаницу в широко обсуждаемом выступлении под названием «Я не люблю ноутбуки».Но «в значительной степени наличие полностью реактивных ноутбуков исключает эту функцию», - говорит он сейчас.
Реактивные записные книжки похожи на электронные таблицы, объясняет Босток. Так же, как Microsoft Excel умеет пересчитывать формулу при изменении базовых ячеек, реактивные записные книжки отслеживают, как ячейки кода связаны друг с другом, чтобы гарантировать, что выходные данные записной книжки всегда отражают ее переменные.
В сочетании с визуальными виджетами, такими как ползунки и раскрывающиеся списки, такое поведение делает записные книжки интерактивными, позволяя читателям исследовать, как изменение переменных или предположений может повлиять на результаты.Херб Зусманн, аспирант по биостатистике Массачусетского университета в Амхерсте, например, использует реактивные документы для объяснения статистических концепций. «Это действительно помогает мне более интуитивно понять, как работают эти статистические вещи», - говорит он. (Тем не менее, реактивность не всегда желательна, особенно если ячейкам требуется много времени для выполнения или когда наборы данных очень большие.)
Реагировать и сотрудничатьСуществуют другие реактивные портативные системы для исследователей, которые этого не делают. использовать JavaScript.Susmann, например, создал реактивный блокнот для программистов на языке R под названием Reactor. А Фонс ван дер Плас, инженер-программист из Берлина, создал Pluto, платформу для реактивных ноутбуков для языка программирования Julia. Анри Дрейк, аспирант кафедры физики климата Массачусетского технологического института в Кембридже, использует Плутон для демонстрации концепций климатологии. «Создание интерактивной записной книжки Плутона делает ее более интересной для начинающего пользователя, - говорит Дрейк, - и действительно может помочь людям понять модели, которые я строю.
Фернандо Перес, соучредитель проекта Jupyter в Калифорнийском университете в Беркли, отмечает, что сам Jupyter «агностик в вопросе реактивности». Большинство ядер до сих пор не реагировали, но это не обязательно: например, Рича Гэджил, бывший стажер Jupyter в Калифорнийском политехническом государственном университете в Сан-Луис-Обиспо, провела стажировку в совместной разработке экспериментального реактивного ядра для Python. «Это была проверка архитектуры Jupyter, и архитектура Jupyter прошла этот тест», - говорит Брайан Грейнджер, руководивший ее работой.
Другая система с открытым исходным кодом, Vizier, ориентирована на управляемую данными реактивность, говорит Джулиана Фрейре, ученый-компьютерщик из Нью-Йоркского университета, соруководившая проектом. Благодаря встроенным функциям проверки данных и интерфейсу электронной таблицы пользователи Vizier могут массировать свои данные, чтобы исправить несоответствия, например, вызванные столбцом, содержащим ответы «Да / Нет» и «Да / Нет». При этом ноутбук перезапускается. «Вы анализируете, вы чистите, вы анализируете, вы чистите», - говорит Фрейре.«И делая это, вы сохраняете все происхождение процесса». В результате пользователи могут вернуться к более раннему этапу очистки и попробовать еще раз, все время регистрируя внесенные изменения. (Ноутбуки Vizier могут обрабатывать код Python, SQL и Scala.)
Некоторые коммерческие реактивные системы, включая Observable, Deepnote и JetBrains 'Datalore (последние две из которых базируются в Чешской Республике), также подчеркивают еще одну болевую точку записной книжки: сотрудничество . Observable, например, позволяет совместное редактирование в реальном времени, как это делает Google Docs, а также комментирование.Существует два уровня плана: персональный (бесплатно для 5 участников в одном интерактивном документе) и Teams (для 6 и более участников: 15 долларов США за редактора в месяц; бесплатно для зрителей).
Габор Чаньи, изучающий молекулярное моделирование в Кембриджском университете, Великобритания, использует Deepnote (бесплатно для до 3 сотрудников, затем 12 долларов на пользователя в месяц) в своем обучении. В прежней системе его университета студент, обращающийся за помощью, мог поделиться копией записной книжки с Чаньи, но они оба не могли просматривать и редактировать один и тот же документ одновременно.«Это было своего рода боль», - говорит он. Но с Deepnote он может помочь студентам отлаживать свой код в режиме реального времени. «Как и в случае с Документами Google, мы видим курсоры друг друга. Мы редактируем ту же записную книжку, и когда они нажимают Shift-Enter на ячейке, я вижу результат. Это был невероятный опыт того, как индивидуальная поддержка может быть оказана эффективно ».
Совместная работа в реальном времени - это «тема массовых действий» и в проекте Jupyter, говорит Перес, и находящийся в разработке прототип доступен на GitHub.«Я очень оптимистичен, что это произойдет в ближайшее время», - говорит он.
Контроль версийМногие коммерческие платформы также решают другую задачу портативных компьютеров: контроль версий.
Формат файла записных книжек Jupyter включает код, метаданные и результаты вычислений. Поскольку эти выходные данные часто представляют собой двоичные изображения, контроль версий - процесс, который разработчики используют для отслеживания изменений файлов, который оптимизирован для файлов с обычным текстом, - может стать трудным. Проблема усложняется тем, что программисты могут с трудом адаптировать стандартные рабочие процессы контроля версий к быстрому итеративному характеру исследования данных.В результате могут быть потеряны важные экспериментальные детали.
Коммерческие платформы, как правило, предоставляют встроенное управление версиями ноутбука. Для тех, кто предпочитает использовать Jupyter, доступны два подключаемых модуля: nbdime, обеспечивающий интеллектуальное структурированное представление изменений файлов, в том числе графического вывода; и Verdant, который предлагает графический интерфейс, который отслеживает, как ячейки изменяются, переупорядочиваются и выполняются.
По словам разработчика Мэри Бет Кери, изучающей взаимодействие человека и компьютера в Университете Карнеги-Меллона в Питтсбурге, штат Пенсильвания, Verdant может упростить взаимодействие с коллегами и рецензентами.«Кто-нибудь скажет:« О, вы пробовали это в модели, или вы пробовали этот анализ? » она сказала. Часто да, но из-за того, что анализ не работал, код удаляется. «Что вы хотите сделать во время встречи, так это просто поднять его и сказать:« О да, я это сделал, и вот почему это не сработало ». И наш инструмент позволяет вам это сделать ».
Такие функции могут сделать и без того удобную для пользователя компьютерную парадигму еще более дружелюбной и более простой в использовании. И это делает их еще более мощным средством научного общения.«Если вы действительно занимаетесь великой наукой, но никто ее не понимает или никто не имеет к ней доступа, тогда какой в этом смысл?» - говорит Дрейк. «Блокноты такого типа могут действительно взволновать людей и познакомить их с концепциями, которые в противном случае были бы непонятными».
Тема для замены ноутбука "N Body Rice" Python Class-jupyter
Автор : Xu Lixuan
Введение :
Делитесь практическими, новыми и забавными знаниями Python
Поднимите свои навыки Python на новый уровень ~
Вы устали от стандартной темы ноутбука jupyter?
Вы когда-нибудь задумывались, можно ли сделать интерфейс ноутбука jupyter немного выше?
Вы хотите однажды сменить тему блокнота jupyter?
С jupyterthemes я могу!
Видеоадрес : https: // www.bilibili.com/video/BV1Et4y1D7ru/
Мы можем установить jupyterthemes через pip
pip install jupyterthemes
Вы также можете обновить jupyterthemes до последней версии с помощью следующей команды
pip install - обновить jupyterthemes
Затем, после завершения загрузки, мы можем использовать его в терминале jupyter-theme Команда для изменения темы ноутбука
jupyter-theme -h # Посмотреть справочное руководство по jupyter-theme
Так же можно пройти jupyter-theme Сокращение команды jt Использовать
jt -h # Просмотреть справочное руководство по jupyter-theme
Настоятельно рекомендуется второй способ, потому что Лень - основное достоинство программистов
Характеристики | Дополнительный параметр | По умолчанию |
---|---|---|
Просмотр справочной документации | -h | – |
Показать все темы оформления | -l | – |
Установить установленную тему | -т | – |
Установить стиль шрифта кода | -f | – |
Установить размер шрифта кода | -fs | 11 |
Установить стиль шрифта записной книжки | -nf | – |
Установить размер шрифта ноутбука | -nfs | 13 |
Установить стиль шрифта ячейки текста / md | -tf | – |
Установить размер шрифта ячейки текста / md | -tfs | 13 |
Установите размер шрифта Pandas DataFrame | -dfs | 9 |
Установить размер шрифта в области вывода | -ofs | 8.5 |
Установить размер шрифта Mathjax (%) | -mathfs | 100 |
Установить поле страницы | -м | авто |
Установить ширину ячейки | -cellw | 980 |
Установить высоту строки | - линия | 170 |
Установить ширину курсора | -cursw | 2 |
Установить цвет курсора | -cursc | – |
Альтернативный макет подсказки | -altp | – |
Alt Markdown BG Color | -altmd | – |
Альтернативный вывод BG Color | -altout | – |
Стиль Vim NBExt * | -vim | – |
Отображение панели инструментов | -Т | – |
Отображаются ли имя файла и логотип | -N | – |
Виден ли логотип ядра | -кл | – |
Возврат к теме блокнота по умолчанию | -r | – |
Восстановить шрифт по умолчанию | -dfonts | – |
Дополнительный стиль шрифта для ячеек кода
-f arg | Моноширинный шрифт |
---|---|
анка | Анка / Кодер |
аноним | Анонимный Про |
золотистый | Аурулент без моно |
битовый поток | Bitstream Vera Sans Mono |
бит / моно | BPmono |
код | Код New Roman |
консоламоно | Консоламоно |
кузина | Кухня |
дежавю | DejaVu Sans Mono |
дроидмоно | Droid Sans Mono |
фира | Fira Mono |
Firacode | Fira Код |
общий | Универсальный моно |
хак | Взломать |
hasklig | Hasklig |
inconsolata | Inconsolata-g |
вход моно | Входной моно |
иосевка | Иосевка |
освобождение | Освобождение Моно |
месло | Место |
офис | Офисный код Pro |
кислород | Кислородный моно |
Робото | Робото Моно |
saxmono | саксофон моно |
источник | Исходный код Pro |
исходный код | Исходный код Pro Средний |
ptmono | PT Моно |
убунту | Ubuntu Mono |
Дополнительные стили шрифтов для блокнотов и ячеек текста / MD
Шрифты без засечек
-nf / -tf arg | Шрифт без засечек |
---|---|
опенанс | Open Sans |
дроиды | Droid Sans |
экзосаны | Exo_2 |
латосаны | Лато |
пцанс | PT Sans |
роботозаны | Робото |
источники | Источник Sans Pro |
Шрифты с засечками
-nf / -tf arg | Шрифт с засечками |
---|---|
лоразериф | Лора |
пцериф | PT Serif |
georgiaserif | Грузия |
кардосериф | Кардо |
малиновыйserif | Багровый текст |
ebserif | EB Garamond |
merriserif | Merriweather |
нейтонсериф | Нейтон |
goudyserif | Сорт Милл Гуди |
# Просмотреть все необязательные темы # честериш | grade3 | грувбоксд | грувбоксл | монокай | океаны16 | онедорк | solarizedd | соляризованный jt -l # Переключиться на тему Grade3 # Обычно обновляйте страницу записной книжки, чтобы увидеть эффект, если он не работает, вам может потребоваться удалить кеш браузера jt -t grade3 # Сбросить тему блокнота и вернуться к до освобождения jt -r # Панель инструментов отображения по умолчанию и имя файла jt -t monokai -T -N # Установите стиль шрифта интерфейса записной книжки и ячеек text / md, а также установите размер шрифта # Единица размера шрифта - pt jt -t oceans16 -tf merriserif -tfs 10 -nf ptsans -nfs 13 # Установите ширину ячейки и высоту строки # Вы можете установить ширину в процентах jt -t chesterish -cellw 90% -lineh 170 # Устанавливаем ширину ячейки на пиксель px, устанавливаем 860px jt -t solarizedd -cellw 860 # Установите курсор в красный цвет и измените его размер на 5 пикселей # Дополнительные цвета b (синий), o (оранжевый), r (красный), p (фиолетовый), g (зеленый), x (цвет шрифта) jt -t solarizedl -cursc r -cursw 5
Тема по умолчанию
честериш
класс3
грувбоксд
грувбоксл
монокай
океанов16
онедорк
солярий
соляризованный
Десять простых правил для написания и совместного использования вычислительного анализа в Jupyter Notebooks
Образец цитирования: Правило A, Бирмингем A, Зунига C, Altintas I, Huang S-C, Knight R, et al.(2019) Десять простых правил для написания и совместного использования вычислительного анализа в Jupyter Notebooks. PLoS Comput Biol 15 (7): e1007007. https://doi.org/10.1371/journal.pcbi.1007007
Редактор: Фрэн Льюиттер, Институт биомедицинских исследований Уайтхеда, США
Опубликовано: 25 июля 2019 г.
Авторские права: © 2019 Rule et al. Это статья в открытом доступе, распространяемая в соответствии с условиями лицензии Creative Commons Attribution License, которая разрешает неограниченное использование, распространение и воспроизведение на любом носителе при условии указания автора и источника.
Финансирование: Авторы не получали специального финансирования для написания этой статьи. Финансирование семинара «Воспроизводимые исследования и интерактивное обучение - применение ноутбуков Jupyter» было предоставлено Суперкомпьютерным центром Сан-Диего в Калифорнийском университете в Сан-Диего.
Конкурирующие интересы: Авторы заявили об отсутствии конкурирующих интересов.
Введение
По мере роста масштабов и сложности исследований становится все труднее давать четкие описания и открытый доступ к методам и данным, необходимым для понимания и воспроизведения компьютерных исследований.Многочисленные статьи [1–3], в том числе несколько из коллекции Ten Simple Rules [4,5], подчеркнули необходимость надежного и воспроизводимого анализа в вычислительных исследованиях, описали трудности достижения этих стандартов и перечислили лучшие практики. Мы стремимся расширить этот существующий источник советов, обращаясь к уникальным проблемам и возможностям, которые возникают при использовании вычислительных записных книжек, особенно Jupyter Notebooks, для исследований [6].
Воспроизводимость, научный стандарт, по которому другие должны иметь возможность воссоздать ваши результаты, требует как минимум «данных и компьютерного кода, используемых для анализа [этих] данных, которые должны быть доступны другим» [2].Для достижения даже этого минимального стандарта обычно требуются как машиночитаемые описания данных, программного обеспечения, зависимостей и вычислительной среды (например, аппаратная или облачная конфигурация), так и удобочитаемая документация, описывающая, как все эти части сочетаются друг с другом. В то время как аналитики ранее хранили код, документацию и результаты в отдельных файлах, они все чаще используют вычислительные записные книжки, такие как Jupyter Notebooks и R Notebooks, как для выполнения анализа, так и для объединения кода, результатов и описательного текста в едином «вычислительном повествовании» для чтения и чтения. повторяется другими [7,8].Эта способность объединять исполняемый код и описательный текст в одном документе тесно связана с понятием Кнута «грамотное программирование» [9] и убедила многих исследователей переключиться на вычислительные записные книжки из других сред программирования. Блокноты Jupyter, в частности, получили широкое распространение: по состоянию на декабрь 2018 г. на GitHub (https://www.github.com) [10] было открыто более 3 миллионов блокнотов Jupyter, многие из которых документировали академические исследования [11] .
Интерактивный и повествовательный характер вычислительных записных книжек предоставляет уникальные возможности для выполнения и совместного использования вычислительных исследований.С некоторой предусмотрительностью они могут предоставить не только подробные описания анализов, но и интерактивные вычислительные среды для их воспроизведения, изучения и расширения. Тем не менее, как и в случае с другими вычислительными средами, использование ноутбуков для исследований требует особой осторожности. Интерактивный запуск и редактирование кода в записных книжках может удалить ключевые шаги или ввести «скрытое состояние», которое затрудняет анализ и сбивает читателей с толку [12]. Анализы, задокументированные в записных книжках, не могут быть легко перезапущены, если пользователи сначала не заморозят свои зависимости, не поделятся своими данными и не описывают адекватно свою вычислительную среду [13].И во многих записных книжках отсутствует достаточный описательный текст, чтобы помочь читателям в их использовании [11,14].
Стремительный рост вычислительных записных книжек предоставляет уникальную возможность для поддержки вычислительных исследований, но при выполнении и совместном использовании анализов в записных книжках необходимо соблюдать осторожность. Учитывая эти возможности и проблемы, мы составили набор правил, советов, инструментов и примеров записных книжек, чтобы помочь авторам Jupyter Notebook. Хотя мы сосредоточены на нескольких основных применениях Jupyter Notebooks, наблюдаемых в нашем собственном исследовании, многие из этих правил могут быть применены к другим вычислительным блокнотам и сценариям использования.На рис. 1 мы даем предварительный просмотр правил, применяемых на разных этапах цикла разработки ноутбука. Независимо от того, используете ли вы записные книжки для отслеживания предварительных анализов, для представления отточенных результатов сотрудникам, в виде точно настроенных конвейеров для повторяющихся анализов или для всего вышеперечисленного, следование этому совету поможет вам писать и делиться анализами, которые легче читать, запускать и исследовать.
Рис. 1. Итерационный рабочий процесс для применения 10 простых правил к созданию Jupyter Notebooks.
Цикл описывает три перекрывающиеся фазы разработки хорошо документированного и функционального Jupyter Notebook.Сначала организуем и документируем тетрадь (Правила 1–3). Во-вторых, кодекс разработан в соответствии с предлагаемыми здесь правилами о стандартах качества (Правила 4–7). Наконец, становится доступным блокнот вместе с данными (Правило 8) таким образом, чтобы поощрять общественное исследование и участие (Правила 9–10).
https://doi.org/10.1371/journal.pcbi.1007007.g001
Правило 1: Расскажите историю для аудитории
Одним из ключевых преимуществ использования Jupyter Notebooks является возможность чередовать пояснительный текст с кодом и результатами для создания вычислительного повествования [7].Вместо того, чтобы вести спорадические записи, используйте пояснительный текст, чтобы рассказать убедительную историю, у которой есть начало, которое вводит тему, середина, которая описывает ваши шаги, и конец, который интерпретирует результаты. Опишите не только то, что вы сделали, но и почему вы это сделали, как связаны шаги и что все это означает. Это нормально, что ваша история со временем меняется, особенно по мере развития вашего анализа, но не забудьте начать документировать свои мысли и процесс как можно раньше.
То, как вы рассказываете историю, будет зависеть от вашей цели и аудитории.Планируете ли вы поделиться своей записной книжкой с коллегой-нетехническим специалистом в вашей лаборатории, аналитиками из другой лаборатории, читателями определенного журнала или широкой публикой? Для каждой аудитории могут потребоваться разные виды и уровни объяснения. В любом случае помните, что вашей основной аудиторией, скорее всего, будет вы в будущем. Достаточно ли ясно ваше объяснение, чтобы вы смогли понять и воспроизвести анализ через месяц? Люди часто переоценивают то, что они смогут вспомнить в будущем, поэтому ошибаются в сторону чрезмерного объяснения.Если в ближайшем будущем вы не сможете воссоздать свой собственный анализ, как это сможет сделать кто-то другой?
Правило 2. Документируйте процесс, а не только результаты.
Интерактивность вычислительных записных книжек позволяет быстро и легко опробовать и сравнить различные подходы или параметры - настолько быстро и легко, что мы часто не можем документировать эти интерактивные исследования в то время выполнить их. Таким образом, давний совет относительно бумажных лабораторных журналов для научных исследований становится еще более важным: обязательно документируйте все свои исследования, даже (или, возможно, особенно) те, которые привели в тупик.Эти комментарии помогут вам вспомнить, что вы сделали и почему. Вы всегда можете удалить эти комментарии позже, если превратите свою записную книжку в конвейер (см. Правило 7) или подготовитесь поделиться ею с более широкой аудиторией (Правило 1), которая может предпочесть краткую презентацию результатов, а не подробную лабораторную записную книжку.
Многие пользователи ноутбуков ждут, чтобы добавить такой пояснительный текст до конца анализа, после того, как они получат надежный результат. Не ждите - к этому моменту вы, возможно, уже забыли, почему вы выбрали конкретное значение параметра, откуда вы скопировали блок кода или что вам показалось интересным в промежуточном результате.Если у вас нет времени полностью задокументировать то, что вы делаете или думаете в данный момент, оставьте короткие описательные заметки, чтобы напомнить себе, что добавить, когда вы дойдете до хорошей точки остановки. Хотя код, необходимый для воспроизведения анализа, может быть автоматически записан в вашей записной книжке, рассуждения и интуиция - нет. Ничего страшного, если история в вашей записной книжке со временем меняется; вам все равно следует рассказывать историю с самого начала, даже если вы еще не знаете концовку.
Очищайте, систематизируйте и делайте аннотации в записной книжке после каждого эксперимента или значимого отрезка работы и выполняйте всю уборку в записной книжке.Например, при подготовке к публикации избегайте ручной настройки фигур с помощью настольных издательских инструментов и вместо этого используйте библиотеки черчения с записной книжкой для создания готовых к публикации версий рисунков и других артефактов, которые будут использоваться в рукописях. Убедитесь, что вы указали свое имя, а также контактную информацию для себя и будущего представителя лаборатории, который сможет ответить на основные вопросы о коде. Документирование даты начала и окончания вашего анализа также является хорошей идеей и может подчеркнуть усилия, которые вы вложили в разработку записной книжки.
Правило 3: Используйте деление ячеек, чтобы прояснить шаги
Блокноты - это интерактивная среда, поэтому очень легко писать и запускать однострочные ячейки. Это поддерживает эксперименты, но может оставить ваши записные книжки беспорядочными и заполненными короткими фрагментами, за которыми трудно следить. Вместо этого попробуйте заставить каждую ячейку в записной книжке выполнять один значимый шаг анализа, который легко понять из кода в ячейке или окружающего описания уценки. Сделайте свой код модульным по ячейкам и пометьте ячейки разметкой над ячейкой.Думайте о каждой ячейке как об одном абзаце, выполняющем одну функцию или выполняющем одну задачу (например, создайте сюжет).
Избегайте длинных ячеек (мы рекомендуем, чтобы что-либо более 100 строк или одна страница были слишком длинными). Поместите низкоуровневую документацию в комментарии к коду. Используйте описательные заголовки уценки, чтобы разбить записную книжку на разделы, которые можно использовать для удобной навигации по записной книжке и добавления оглавления. Разделите длинные записные книжки на серию записных книжек и ведите индексную записную книжку верхнего уровня со ссылками на отдельные записные книжки.Использование прозрачных ячеек и делений записной книжки значительно упростит чтение вашего анализа.
Правило 4: Модуляризация кода
Всегда рекомендуется избегать дублирования кода, но в записных книжках особенно легко скопировать ячейку, настроить несколько строк, вставить полученный код в новую ячейку или другую записную книжку и запустить снова. Эта форма экспериментирования целесообразна, но делает записные книжки трудными для чтения и почти невозможными в обслуживании, если вы хотите изменить функциональность или исправить ошибку в скопированном коде.Вместо этого оберните код, который вы собираетесь скопировать, и повторно использовать в функции, которую затем можно вызывать из любого количества ячеек. Если вы собираетесь повторно использовать код в других проектах или записных книжках, подумайте о том, чтобы превратить его в модуль, пакет или библиотеку.
Модульность не только экономит место, поддерживает обслуживание и упрощает отладку, но также упрощает добавление интерактивности. Например, вы можете связать виджеты (ipywidgets, https://ipywidgets.readthedocs.io/en/stable/) с функциями для поддержки исследования различных значений параметров или поддержки взаимодействия с визуализациями без необходимости изменения кода.Это один из способов создания ноутбука для изучения (Правило 9).
Правило 5: Запишите зависимости
Для повторного выполнения анализа в будущем потребуется доступ не только к вашему коду, но и к любому модулю или библиотеке, на которые опирался ваш код. В соответствии с передовой практикой в области вычислительной техники управляйте зависимостями с помощью диспетчера пакетов или среды, например pip или Conda. Они позволяют загружать модули и библиотеки, указывать версию каждого из них, которую вы хотите использовать в своем анализе, и даже создавать файлы, такие как среда Conda.yml или pip’s requirements.txt, которые кратко описывают все ваши зависимости. Эти файлы могут использоваться такими инструментами, как Binder или Docker, для создания «контейнера», который другие исследователи могут использовать для воспроизведения вашего анализа с использованием тех же версий каждого модуля и библиотеки, что и вы. Всегда выполняйте свою работу в среде, созданной только из этих зависимостей, чтобы не добавлять недокументированные зависимости.
В качестве дополнительной меры предосторожности в записных книжках вы можете явно распечатать свои зависимости с помощью расширения записной книжки, например водяного знака (https: // github.com / rasbt / watermark). Перечисление версий критических зависимостей в самой записной книжке (лучше всего в нижней части) гарантирует, что, если она используется изолированно от своей среды, записная книжка по-прежнему будет содержать важную информацию, которая поможет читателям запустить его.
Правило 6: Используйте контроль версий
Контроль версий является важным дополнением к использованию записных книжек, поскольку интерактивный характер записных книжек позволяет легко случайно изменить или удалить важный контент. Кроме того, поскольку записные книжки содержат код, а код неизбежно содержит ошибки, возможность определить историю того, когда данная обнаруженная вами ошибка была внесена в код по сравнению с тем, когда она была исправлена, и, следовательно, анализ, на который она могла повлиять, является ключевой возможностью. в научных вычислениях.Обратитесь к статье «Десять простых правил» Перес-Риверола и его коллег [15] о том, как использовать Git и GitHub для управления версиями в целом. Также следуйте рекомендациям по организации репозитория для упрощения контроля версий, например http://drivendata.github.io/cookiecutter-data-science/.
Однако имейте в виду, что Jupyter Notebooks хранят как код, так и обширные метаданные о каждой ячейке в виде текстового файла в формате JavaScript Object Notation (JSON). Системы контроля версий сравнивают различия в этих файлах JSON, а не различия в удобном графическом интерфейсе пользователя (GUI) записной книжки.Из-за этого пользователям обычно трудно найти и понять обнаруженные различия между версиями данной записной книжки, поскольку они выражаются как изменения в заумных метаданных JSON для записной книжки. Один из способов решения этой проблемы - использовать специальный инструмент сравнения для записной книжки, например nbdime, который понимает структуру записной книжки и представляет различия значимым образом (https://github.com/jupyter/nbdime). Другой подход - преобразовать записную книжку в более удобный для управления версиями тип файлов, например.py перед фиксацией изменений.
Правило 7: Постройте конвейер
Записные книжки, документирующие начальные, исследовательские исследования, редко можно будет широко обобщить, но как только будет определен стабильный подход к анализу, хорошо спроектированный ноутбук может быть преобразован в конвейер, который легко повторяет этот анализ с использованием различных входных данных. данные и параметры. Помня об этом, с самого начала спроектируйте свой ноутбук так, чтобы его можно было использовать в будущем. Поместите объявления ключевых переменных, особенно те, которые будут изменены при выполнении нового анализа, в верхней части записной книжки, а не закапывайте их где-то посередине.Выполняйте подготовительные действия, такие как очистка данных, прямо в ноутбуке и избегайте ручного вмешательства.
Поскольку интерактивность записных книжек делает их уязвимыми для случайной перезаписи или удаления критических шагов пользователем, если ваш анализ выполняется быстро, возьмите за привычку регулярно перезапускать ядро и повторно запускать все ячейки, чтобы убедиться, что вы случайно не удалили шаг во время очистки. ваш блокнот (и если вы это сделали, получите код для него из системы контроля версий). Перезапуск ядра и запуск всех ячеек также является хорошим финальным тестом результатов.Чтобы разрешить частичное выполнение сложного анализа, разбейте длинные записные книжки на записные книжки меньшего размера, которые сосредоточены на одном или нескольких этапах анализа. Затем убедитесь, что каждая записная книжка хранит сериализованные версии ключевых промежуточных результатов на диске для использования в последующих записных книжках.
После разработки блокнота его можно параметризовать с помощью такого инструмента, как papermill (https://github.com/nteract/papermill). Такие записные книжки можно использовать не только в интерактивном режиме, но и как инструменты командной строки, которые могут запускаться автоматически - большое благо для конвейеров! Подумайте о том, чтобы связать шаги конвейера анализа с помощью Makefile или аналогичного инструмента, который позволяет полностью не интерактивно выполнять весь конвейер, как на полных, так и на частичных этапах.Такая автоматизация также поддерживает такие методы качества кода, как тестирование программного обеспечения; рассмотрите возможность тестирования ваших рабочих процессов от начала до конца каждый раз, когда фиксируется изменение, путем интеграции вашего репозитория в систему непрерывной интеграции (например, https://travis-ci.org/). И последнее, но не менее важное: имейте в виду, что у конвейерных записных книжек почти наверняка будет совсем другая история (Правило 1), чем у первоначального анализа, который их породил! Не забудьте удалить любой вводный, интерпретирующий или заключительный текст, который не универсально применим к различным входным данным и результатам, и вместо этого заменить его руководством для пользователя конвейера о том, как запускать и интерпретировать его (потенциально новые) результаты.
Правило 8: Поделитесь своими данными и объясните их
Наличие доступа к записной книжке с четкими комментариями мало полезно для тех, кто хочет воспроизвести или расширить ваши результаты, если базовые данные заблокированы. Стремитесь сделать свои данные или их образец общедоступными вместе с записной книжкой. В то время как совместное использование ваших данных требует тщательного планирования, записные книжки упрощают предоставление описания ваших входных данных и этапов восходящей обработки, которые необходимы для интерпретации результатов.
В идеале вы будете использовать весь набор данных вместе с записными книжками. Мы понимаем, что многие наборы данных слишком велики или слишком конфиденциальны, чтобы делиться ими таким образом. В этих случаях рассмотрите возможность разбиения больших и сложных наборов данных на уровни, чтобы, даже если необработанные данные слишком велики для включения в опубликованные записные книжки или ограничены конфиденциальностью или другими проблемами доступа, воспроизводимость и интерпретируемость не терялись. Вы можете размещать общедоступные копии анонимных данных среднего размера на различных хостингах (например, figshare [https: // figshare.com /], zenodo [https://zenodo.org/]), и включать дополнительно обработанные наборы данных вместе с записными книжками в окончательный репозиторий. Для однозначной и постоянной идентификации наборов данных эти службы хостинга предоставляют идентификаторы цифровых объектов (dois). Этот многоуровневый подход обеспечивает общественное доверие и позволяет другим воспроизводить и повторно использовать последние этапы анализа даже без доступа к полному набору необработанных данных.
Правило 9. Создавайте свои записные книжки так, чтобы их можно было читать, запускать и изучать.
Если вы следовали предыдущим правилам, ваши записные книжки должны отражать весь процесс и быть удобочитаемыми.Но как другие будут получать к ним доступ, запускать и исследовать? Есть несколько способов поддержать повторное использование ваших записных книжек другими. Во-первых, сохраните свои записные книжки в общедоступном репозитории кода с открытым файлом README и либеральной лицензией с открытым исходным кодом (https://opensource.org/licenses), дающей разрешение на повторное использование вашего кода.
Чтение: Помимо предоставления разрешения на повторное использование записной книжки, подумайте, как можно использовать уникальную структуру записных книжек для поддержки чтения. По крайней мере, оставьте статические HTML / PDF-версии всех записных книжек, хранящиеся в окончательной версии репозитория, сопровождающего публикацию.Если через 20 лет все остальные технологии выполнения выйдут из строя, они, вероятно, все еще будут обеспечивать читаемую архивную запись, а с полным списком зависимостей будущие пользователи с большей вероятностью смогут воссоздать вычислительную среду. Вы также можете использовать Nbviewer (https://nbviewer.jupyter.org/) для предоставления статических представлений выполненной записной книжки в Интернете без необходимости сначала конвертировать ее в документ PDF / HTML. GitHub использует эту службу для рендеринга любых записных книжек на своем сайте, поэтому отправка записной книжки на GitHub - еще один хороший способ сделать статические представления легкодоступными.В обоих случаях вы можете указать соавторам URL-адрес, по которому они смогут читать вашу записную книжку в Интернете.
Run: для поддержки других пользователей, использующих ваши записные книжки, вы можете использовать Binder [16], чтобы обеспечить среду без установки для запуска ваших записных книжек в облаке (https://mybinder.org/). Binder позволяет участникам сообщества перезапускать ваш блокнот онлайн без необходимости устанавливать Jupyter Notebook или Jupyter Lab на их собственном компьютере. В более общем плане вы можете создать переносимую контейнерную среду, например, образ Docker (https: // docs.docker.com/) или создайте файл описания зависимостей (см. Правило 3), чтобы будущим пользователям вашего ноутбука было легче воспроизвести вашу вычислительную среду при повторном запуске ноутбука.
Explore: Помимо простого воспроизведения результатов анализа в записной книжке, подумайте, как вы можете спроектировать ноутбук, чтобы будущие пользователи могли настраивать и исследовать ваш анализ. Рассмотрите возможность использования ipywidgets (https://ipywidgets.readthedocs.io/en/stable/), чтобы позволить будущим пользователям изменять параметры с помощью графических элементов, таких как раскрывающиеся списки и ползунки, а не настраивать код.Помимо предоставления будущим пользователям возможности изменять параметры или вставлять свои собственные наборы данных, подумайте, как они могут захотеть ремикшировать или повторно использовать части вашей записной книжки (возможно, только этапы очистки данных или построения графиков) и использовать структуру ячеек и функции, чтобы упростить их извлечение. разделы (Правило 7).
Правило 10: Сторонник открытых исследований
Очевидно, что простое использование вычислительной записной книжки не гарантирует, что другие смогут читать, выполнять или изучать ваш анализ. Если удобство и интерактивность этой технологии убедили вас принять ее, сделайте следующий шаг и станьте сторонником ее эффективного использования в своей лаборатории или на рабочем месте.Попросите сокурсников или коллег попробовать запустить один из ваших блокнотов, а затем слушайте, когда они объясняют любые трудности. Попробуйте запустить их записные книжки и дайте им знать, если вы наткнетесь на препятствия. Сделайте надежный и воспроизводимый анализ ключевым элементом всей вычислительной работы вашей исследовательской группы, а не этапом, выполняемым после завершения анализа или запоздалой мысли, вызванной требованиями журнала или рецензента.
Записные книжки с аннотациями
Чтобы продемонстрировать 10 правил, мы создали репозиторий Git с примерами записных книжек с аннотациями (https: // github.com / jupyter-guide / ten-rules-jupyter). Следуя правилу 9, прочтите, запустите и исследуйте эти записные книжки. Кроме того, мы создали репозиторий (https://github.com/jupyter-guide/jupyter-guide) для сбора более технических и подробных руководств и не отставать от быстро развивающейся экосистемы Jupyter. Мы призываем вас внести свой вклад и поделиться своим опытом и ноу-хау в соответствии с Правилом 10.
Выводы
Надежный и воспроизводимый анализ лежит в основе науки, и в нескольких статьях уже содержатся отличные общие советы о том, как выполнять и документировать вычислительную науку.Однако появление вычислительных ноутбуков представляет новые возможности и проблемы, упрощая точное документирование сложных рабочих процессов и усложняя их за счет интерактивности. Мы представляем 10 простых правил для написания и совместного использования аналитических материалов в Jupyter Notebooks, уделяя особое внимание аннотации анализа, организации кода и простоте доступа и повторного использования. Основываясь на нашем опыте, мы надеемся, что они внесут свой вклад в экосистему отдельных лиц, лабораторий, издателей и организаций, использующих ноутбуки для выполнения и обмена вычислительными исследованиями.
Благодарности
Этот документ представляет собой краткое изложение семинара «Воспроизводимые исследования и интерактивное образование - применение блокнотов Jupyter», проведенного в Калифорнийском университете в Сан-Диего 5 апреля 2018 г. Мы благодарим всех участников, которые внесли свои идеи в этот документ, в том числе Тьяго Леао, Натана Миха, Светлана Пурават, Майкл Райх, Бриттон Смит, Шуай Тан и Гуоронг Сюй.
Ссылки
- 1. Barba LA. Трудный путь к воспроизводимости. Наука.2016; 354: 142. pmid: 27846503
- 2. Пэн РД. Воспроизводимые исследования в области вычислительной техники. Наука. 2011; 334: 1226–1227. pmid: 22144613
- 3. Уилсон Дж., Брайан Дж., Крэнстон К., Китзес Дж., Недербрагт Л., Бирюзовый Т.К. Достаточно хорошие практики в научных вычислениях. PLoS Comput Biol. 2017; 13 (6): e1005510. pmid: 28640806
- 4. Сандве Г.К., Некрутенко А., Тейлор Дж., Ховиг Э. Десять простых правил для воспроизводимых вычислительных исследований. PLoS Comput Biol.2013; 9 (10): e1003285. pmid: 24204232
- 5. Тащук М. и Уилсон Г. Десять простых правил повышения надежности исследовательского программного обеспечения. PLoS Comput. Биол. 2017; 13 (4): e1005412. pmid: 28407023
- 6. Воспроизводимые исследования с использованием Jupyter Notebooks. [Интернет] [процитировано 4 октября 2018 г.]. Доступно по адресу: https://reproducible-science-curriculum.github.io/workshop-RR-Jupyter/.
- 7. Перес Ф, Грейнджер БЭ. Вычислительные нарративы как двигатель совместной науки о данных.2015. [Интернет] [процитировано 4 октября 2018 года]. Доступно по адресу: https://blog.jupyter.org/project-jupyter-computational-narratives-as-the-engine-of-collaborative-data-science-2b5fb94c3c58.
- 8. Клюйвер Т., Раган-Келли Б., Перес Ф., Грейнджер Б., Бюссонье М. и др. Jupyter Notebooks - формат публикации для воспроизводимых вычислительных рабочих процессов. В: Лоизидес Ф., Шмидт Б., редакторы. Позиционирование и власть в академическом издательстве: игроки, агенты и повестки дня. Амстердам: IOS Press; 2016. с. 87–90.https://doi.org/10.3233/978-1-61499-649-1-87
- 9. Knuth DE. Грамотное программирование. Компьютерный журнал. 1984. 27 (2): 97–111.
- 10. Оценка общедоступных блокнотов Jupyter на GitHub. [Интернет] [процитировано 4 октября 2018 г.]. Доступно по адресу: https://github.com/parente/nbestimate.
- 11. Правило А, Гербовая накидка А, Холлан Дж. Д. Исследование и объяснение в вычислительных тетрадях. CHI '18 Труды конференции CHI 2018 по человеческому фактору в вычислительных системах.Нью-Йорк: ACM; 2018. https://doi.org/10.1145/3173574.3173606
- 12. Грус Дж. Я не люблю записные книжки. JupyterCon. Нью-Йорк, штат Нью-Йорк. 2018. [Интернет] [цитировано 3 января 2019 г.]. Доступно по адресу: https://docs.google.com/presentation/d/1n2RlMdmv1p25Xy5thJUhkKGvjtV-dkAIsUXP-AL4ffI/edit#slide=id.g3d168d2fd3_0_255
- 13. Вудбридж М., Санс Д., Митчен Д., Маунс Р. Юпитер. Записные книжки и воспроизводимая наука о данных. 2017. [Интернет] [процитировано 4 октября 2018 г.]. Доступно по адресу: https: // markwoodbridge.com / 2017/03/05 / jupyter-reproducible-science.html.
- 14. Кери МБ, Раденский М., Арья М., Джон Б.Е., Майерс Б.А. История в записной книжке: исследование данных с использованием инструмента грамотного программирования. CHI '18 Труды конференции CHI 2018 по человеческому фактору в вычислительных системах. Нью-Йорк: ACM; 2018. https://doi.org/10.1145/3173574.3173748
- 15. Perez-Riverol Y, Gatto L, Wang R, Sachsenberg T., Uszkoreit J, et al. Десять простых правил использования Git и GitHub.PLoS Comput. Биол. 2016; 12 (7): e1004947.