LINUX.ORG.RU

Python в научных вычислениях

 ,


29

6

Доктор физико-математических наук Андрей Грозин прочитал цикл лекций об использовании Python в целях ликвидации безграмотности среди студентов, аспирантов и прочих. Презентации были приготовлены для представления в среде Jupyter. Видеоматериалы лекций с разрешения лектора доступны под свободной лицензией CC-BY-SA. Исходные видеофайлы будут выложены в торрентах позже.

Первая и третья лекция записаны не были. Остальные записаны, как записаны. Лекционные материалы выложены на страничке лектора.

Первые четыре лекции представляют из себя введение в язык программирования Python. Следующие пять лекций — это обзор возможностей Python, которые смогут пригодится в процессе занятия наукой.

  • Лекция 1. Jupiter. Числа. Строки. Списки. (html, ipynb)
  • Лекция 2. Кортежи. Множества. Словари. Функции.(html, YouTube, ipynb)
  • Лекция 3. Объектно-ориентированное программирование. Исключения. (html, ipynb)
  • Лекция 4. Модули. Ввод-вывод, файлы, директории. (html, YouTube, ipynb)
  • Лекция 5. numpy. Одномерные массивы. Операции над одномерными массивами. 2-мерные массивы. Линейная алгебра. Преобразование Фурье. Интегрирование. Дифференциальные уравнения.(html, YouTube, ipynb)
  • Лекция 6. matplotlib. Логарифмический масштаб. Полярные координаты. Экпериментальные данные. Гистограмма. Контурные графики. Images (пиксельные картинки). Трёхмерная линия. Поверхности. (html, YouTube, ipynb)
  • Лекция 7. SymPy (html, ipynb). Многочлены и рациональные функции. Элементарные функции. Структура выражений. Решение уравнений. Ряды. Производные. Интегралы. Суммирование рядов. Пределы. Дифференциальные уравнения. Линейная алгебра. Собственные значения и векторы. Нормальная жорданова форма. Графики. (html, YouTube, ipynb)
  • Лекция 8. iminuit (html, ipynb). cython. Функции. Интерфейс к библиотеке на C. Структуры. cdef классы. Интерфейс к библиотеке на C. (html, YouTube, ipynb)
  • Лекция 9. Интерфейс к библиотеке на C (продолжение). pandas (html, ipynb) — пакет для статистической обработки данных. Series. DataFrame. sh — простой вызов shell-комманд. rpyc — remote python call. pyroot — интерфейс к пакету анализа данных в том числе и данных очень большого объёма ROOT. (YouTube)

>>> YouTube

★★★★★

Проверено: splinter ()

Ответ на: комментарий от iVS

А иначе как делать программы эффективными?

Ты так говоришь как будто это самая животрепещущая проблема. Таких ученых примерно столько же сколько и линуксоидов. Все твои аргументы основываются на ложной предпосылке.

A1 ()
Ответ на: комментарий от A1

Таких ученых примерно столько же сколько и линуксоидов

Угу, я и забыл, что всех только игрушечные модельки интересуют. В физике задач чисто расчетных полно.

iVS ★★★★★ ()
Ответ на: комментарий от iVS

Игрушечную модельку надо еще разработать.

В физике задач чисто расчетных полно.

Я так и знал что ты снобсвующая илитка. Наука на физике не заканчивается. И даже не начинается.

A1 ()
Ответ на: комментарий от iVS

Правда? Тогда вам сказочно повезло! Это у профессора есть аспиранты со студентами, что переписывать его г@#внокод. А молодой ученый — это и швец, и жнец, и в дуду игрец.

Не совсем так. Профессору с его аспирантами, всем им может быть наплевать на оптимальность реализации алгоритма, кроссплатформенность, а главное - опубликоваться (publish or perish). Если в том же машинном зрении, допустим, придумывается какой-то новый метод сегментации сцены, который обладает преимуществом перед существующими, - например, для какого-то определённого рода сцен он выделяет сегменты, в большей степени соответствующие физическим объектам, воспринимаемым человеком, - тогда достаточно формально доказать большую эффективность, или, как бывает, привести формально-правдоподобный аргумент, почему это может быть эффективнее, и, в любом случае, провести эксперимент, иллюстрирующий превосходство метода на конкретном наборе данных, сравнивая с результатами уже опубликованных методов. У них есть наработки на Матлабе, которые они развивают не один год, им совершенно не важно, что не все смогут воспроизвести результат (только те, кто купил (кому купили) лицензию на Матлаб), им не важно, что код плохо структурирован (даже с имеющимися языковыми возможностями Матлаба) и медленный (хватает, соответственно, объяснений старших, как оно устроено и возможности написания расширений на C, которые тоже пишутся неоптимально); главное, что принципиально есть что-то новое, что имеет смысл опубликовать, что и делается. Есть публикация, грант распилен, новые записи в списках публикаций добавлены, отчёт для начальства написан. Точка.

Если кто-то разрабатывает эффективную реализацию предложенного метода, сама реализация заслуживает описания в отдельной статье, но профессору с его командой может быть совершенно не интересна эффективная реализация, ровно как и кросплатформенность, масштабируемость, интероперабельность и проч.. Зарплату и гранты дают за то, что они делают хорошо, а не за то, что теоретически было бы лучше сделать для максимального количества пользователей изобретённого метода.

seiken ★★★★★ ()
Ответ на: комментарий от seiken

Совершенно верно. По моему опыту, успешные исследователи в подавляющем большинстве случаев абсолютно безразличны к языкам программирования и программированию как таковому (включая читабельность, сопровождаемость, «красоту» кода и т.д.). Более того, я видел примеры обратной зависимости. Чем более человек интересуется всем этим (и, скажем, linux'ом), тем меньше его достижения с научной точки зрения. Наверное, в пограничных областях типа CS исключений может быть больше, но тренд все равно такой-же

Тут надо еще понимать, что современная наука (на мировом уровне) это очень конкурентная область. Чтобы преуспеть в ней надо либо иметь маниакальное желание сделать именно научную карьеру, либо очень любить сам предмет. В обоих случаях серъезные затраты времени на интересы за пределами основной деятельности исключены (сознательно в первом случае и бессознательно во втором). Это все при условии что человек не является гением (как, скажем, Alan Kay — таким времени/сил хватает на все).

Образ мыслей и заботы современного ученого очень хорошо отражен в The Ph.D. Grind by Philip Guo (http://pgbovine.net/PhD-memoir.htm). После прочтения вопросов о том как программируют исследователи и почему это так остаться не должно, я думаю.

ebly ()
Ответ на: комментарий от ebly

Я, вообще, часто задумывался о балансе предметная область/программизм и, наверное, слишком клонил в программизм. Стремление писать хороший код похвально, конечно, но надо понимать с кем ты конкурируешь. Очень много народа может запилить написать клевый код для алгоритмически несложных задач (по сути, тут даже высшее образование не нужно). Соответственно, если это твое единственное умение, то перспективы не очень радужные.

Как вы решаете для себя этот вопрос если он стоит?

ebly ()
Ответ на: комментарий от ebly

Чистые информатики в физике не нужны, нужны физики со знанием элементов информатики. IMHO информатика для физиков — это необходимость, потому что всё, что можно сделано руками уже было сделано до нас и не пользоваться имеющемся преимуществом перед предыдущими поколениями в виде компьютероной техники глупо.

Но да, основное — это предмет и если предмет не интересен, то лучше сменить область деятельности.

Evgueni ★★★★★ ()
Ответ на: комментарий от iVS

iVS, я без какой-либо злобы к тебе это спрошу, но специалисты не в состоянии оценить на чем они сосчитают быстрее, допускаешь ли ты что там где производят чисто расчеты не напишут Си-шные модули-расширения там где это необходимо и это даст решительный выигрыш? Или вообще выбирают другой инструмент? Ты призываешь не ездить на такси в булошную? Так и не ездят где это не оправдано. :)

I-Love-Microsoft ★★★★★ ()
Ответ на: комментарий от I-Love-Microsoft

Чтобы писать сишную либу для питон, нужно знать хотя бы два этих языка. Выучив сишку, потом питон за вечер освоишь. Зато никогда не будешь упираться в производительность. А питон ты просто выучишь и всё, потом учить что-то сложное, это как с ворда на латех пересаживать — не получится. Мне кажется, все таки, что задач очень много, и одним питоном их решать нецелесообразно.

iVS ★★★★★ ()
Ответ на: комментарий от Evgueni

А потом берешь код с произвольного проекта в ЦЕРНе и плачешь над ним. // ладно, если быть честным, то я с произвольных не видел, а всего лишь с нескольких, но мои впечатления совпадают с впечатлениями людей из других проектов.

qnikst ★★★★★ ()
Ответ на: комментарий от qnikst

Ты будешь смеяться, но оно работает. Криво, косо, но результаты получаются. Тут выбор между не красиво/безобразно, а есть результат/нет ничего вообще.

Evgueni ★★★★★ ()
Ответ на: комментарий от Evgueni

да, я знаю. В общем-то это причина, почему надо быть в предметной области, а не только программистом.Впрочем, чистые информатики это тоже не очень понятный термин, т.к. в понятии некоторых у чистого информатика известный ему мат. аппарат может быть больше, чем у физика, а такой уже, на мой скромный взгляд в команде уже может работать. Про красиво/безобразно - это ж не эстетическое удовольствие, это собирательное слово для надёжности, поддерживаемости, переиспользуемости.

qnikst ★★★★★ ()
Ответ на: комментарий от qnikst

У нас на физфаке есть кафедра ФТИ (физико-техническая информатика) и АФТИ (тоже что-то такое) и физического образования, для того чтобы стать предметникам, им не хватает (за очень редкими исключениями, которые только подтверждают правило). Мой опыт общения со студентами ФТИ по предметным задачам был весьма не положителен, хотя ребята очень даже нормальные, но установки совсем другие. Держать человека в команде как подсобного рабочего — это IMHO не очень правильно (если нет цели иметь именно подсобного рабочего).

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

Evgueni ★★★★★ ()
Последнее исправление: Evgueni (всего исправлений: 3)
Ответ на: комментарий от Evgueni

У нас на физфаке есть кафедра ФТИ (физико-техническая информатика) и АФТИ (тоже что-то такое) и физического образования, для того чтобы стать предметникам, им не хватает (за очень редкими исключениями, которые только подтверждают правило).

спорить не буду, хоть мы и из разных областей, но мой пример, наверное подтверждает опыт, т.к. из меня самостоятейльный физик не вышел и дойдя до определенной точки, дальше которой продолжение работы в данной области совершенно бессмысленно для меня.

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

эта дополнительная проверка корректности, всякие long-term баги можно вылавливать, и перепроверять результаты, опять же на мой скромный взгляд с этим бывают некоторые проблемы. Т.е. все эти росты популярности python зачастую из того, что появляется больше библиотек, которые можно (пере)использовать, и это хорошо.

qnikst ★★★★★ ()
Ответ на: комментарий от qnikst

Проблемы с багами безусловно глобальные — я не спорю, так как я с этим софтом работаю, но скажем так, баги в основном сидят в C++ программах :) Python там совершенно не причём. Программы на Python как раз предпочтительней, что они просто короче аналогов на C++ (то, что касается всякого рода обвязок в особенности) и там меньше букв, в которых можно ошибиться.

Это ни к чему не обязывающие рассуждения — просто мысли вслух.

Очень длительное время для всяких обвязок я использовал perl и до сих пор кодировать на perl для меня гораздо комфортнее чем Python. Собственно говоря идея CPAN, которая везде расползлась (хоть тоже была заимствована) очень хороша в ситуации, когда множество людей решают свои мелки людские задачи и скидывают в общую кучу. Наиболее удобные решения потом переиспользуются и развиваются. Этакая эволюция без какого-либо плана и для свободного софта это самая оптимальная похоже стезя развития.

Evgueni ★★★★★ ()
Ответ на: комментарий от omegatype

Поясните, кто в теме - что такое Jupiter по сравнению с notebook из ipython и notebook из Sage Math?

Как минимум, в jupyter есть третий питон, в отличии от sage.

fffgh ★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.