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 ()

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

Кто-нибудь в курсе, планируется ли полноценная многопоточность в Питоне?

Да собственно все уже есть и это всех устраивает.

dmxrand ()

Как ни странно, я посмотрю этот курс лекций обязательно.

Пробовал применять numpy matplotlib и прочее, но запутался в преобразованиях типов туда сюда. Очевидно я делал что-то явно не так.

А почему python? Просто много хороших, удобно оформленных библиотек, которые легко подключать. Главно куча готовых решений. Секрет прост. Пусть оно хоть в 10 раз медленнее...

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

Ты советуешь платный продукт, но не хочешь его оплатить тем кто считает его неоправданно дорогим для их конкретных задач? Что это как не реклама?

Может и MSO стоит своих денег, но мне подходит LibreOffice. Намек надеюсь понят.

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

Где я его советую? Не нужно приплетать ко мне свои домыслы и фантазии.

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

Закрытый калькулятор-переросток не нужен. Он лишь чуть-чуть «правильнее» ексела.

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

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

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

Закрытый калькулятор-переросток не нужен

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

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

На форумах задают вопросы и на тему Пони, но это не значит что офтопик следует подпускать к анализу данных хоть в каком-то виде. Это яркий пример плохого неавтоматизируемого интерфейса.

Evgueni ★★★★★ ()

чего это 7-я лекция вдруг на английском ? сижу просматриваю и вдруг насторажило, что что-то тут не то :)

grem ★★★★★ ()

Python в целях ликвидации безграмотности среди студентов, аспирантов и прочих.

Ахах, троллинг 80-го левела))

carbon ()

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

Кстати, еще никто в теме не упоминал Sage Math (https://en.wikipedia.org/wiki/SageMath) - IMHO, это очень удобная штука, особенно хороша низким порогом вхождения.

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

Если я правильно понимаю, то Jupyter — это официальное развитие ipython.

Evgueni ★★★★★ ()

По-моему, навязывание питона в научных кругах (что де-факто сейчас и происходит) — верх маразма. Это только приучать к заведомо пагубной практике: отсутствие статической типизации, тупые ошибки, если нет нужных тест-кейсов (а кто из научных работников этой хренью будет заниматься?), большой болт на оптимизацию (GIL, 8ГБ для одного приложения — нормально), навязывание питона студентам (легаси говнокод руководителя кому-то поддерживать надо). Упоролись что ли вконец все?

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

По-моему, навязывание питона в научных кругах (что де-факто сейчас и происходит) — верх маразма

Ты бы предпочел Matlab? MathCAD?

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

Ты матлаб видел? Начерта там статическая типизация? Так вот питон в научных кругах - прежде всего свободная замена матлаба. Для этих задач подходит идеально.

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

Ты бы предпочел Matlab? MathCAD?

А Fortran уже отменили?

Прототипировать алгоритмы на Fortrane? Серьезно?

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

Языком программирования, например. Вместо того, что бы использовать готовый язык, они напридумывали надстройку над матричным калькулятором.

Когда ты занимаешься непосредственно вычислениями - сахарок для матричных операций, да, неплох. Можно даже сказать, что делать тоже в numpy утомительнее. Но когда начинается алгоритмизация (и, скажем, ООП), то начинается boilerplate code ад:

  • Привязка имён файлов к именам функций и классов
  • Нет возможности мешать код и определение функций и классов в m-файле.
  • Нет возможности написать call_a().call_b()
  • Вынужденная работа с hObject и handles
  • Постоянная точка с запятой и индексация с 1
  • Неймспейсы в матлабе?
  • Нет возможности делать файлы исходного кода в utf-8
  • Работа с исключениями, и исключениями при работе в GUI
  • Попробуйте сделать для строки метод startswith
  • Переменные-объекты, которые на самом деле числа, которые как бы указатели на объекты. Но есть «новые» объекты (handle), которые больше похожи на то, что называют «объектами» в остальных языках.
  • GUI-привязки к другим тулкитам?
  • Вставки в файлах от самого матлаба вида «% Begin initialization code - DO NOT EDIT»
  • Кросс-платформенность и переносимость кода мягко говоря, неофициальны

P.S. Возможно, какие-то из этих недостатков пофиксили в прошедшие пару лет. Не знаю, соскочил с этого раньше.

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

Fortran может все, чувак...

Чувак, машинные коды тоже могут всё.

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

Задача анализа данных как правило одноразовая и непонятная. То есть на входе нет законченного ТЗ как класса и вылизывать её особого смысла нет. Для быстрого изменения процедуры анализа показала себя хорошо связка C/C++/Fortran программ со сложным и абсолютно неинтутивным интерфейсом (в силу того, что хотелки меняются постоянно, а не от хорошей жизни), которая на входе получает множество разного рода параметров, а на выходе выдаёт результат, ага, тоже в неинтуитивном виде и скриптового языка, которым это всё это безобразие оборачивается и автоматизируется. На сегодня скриптовый язык — это Python. Альтернатив пока нет. Раньше был Perl, но он пока сошёл с дистанции, надеюсь только отдохнуть.

И да, Python не навязывают — он сам заводится. Мне известно как минимум пара случаев «самозорождения».

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

А спрашивали про маткад, посмотри пост на который ты отвечал.

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

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

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

tailgunner, curufinwe:

Предлагаете выбор из сортов г@#на? Известное оправдание «не мы такие, жизнь такая». Раз жизнь такая, то нужно питаться только этим?

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

Насчёт матлаба у меня аналогичное мнение. Но речь изначально шла про mathcad.

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

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

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

Зато с бубенчиками и висюльками. Многим, как нам тут пытаются втереть, нравится.

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

Причем тут жизнь? На данный момент для решения большого круга научных задач лучше всего подходит именно питон, как раз и хорошо, что из проприетарного Г благодаря нему больше выбирать не надо. Я не понимаю, чем тебе не нравится его использование. Есть у меня осциллограмма, надо спектр получить. Три-четыре строчки на питоне скрипт, две минуты работы, график в любом нужном формате готов. Какой статически типизированный язык тут лучше? На Cи даже с использованием GSL и gnuplot это намного больше возни.

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

Но маткад уж совсем слаб.

Для учёбы (например, для курса ЦОС) — самое то.

Простой как молоток. Сразу можно пользоваться.

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

Предложи альтернативу. Есть еще Julia, в которой и типизация, и конпеляция, и что угодно, но там настолько все сырое, тормозное и недоделанное, что пока что никакой альтернативой питону она не является.

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

Пользоваться головой надо, а для профессионального использования ПО, которое не автоматизируется, идёт в топку без вариантов.

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

Задача анализа данных как правило одноразовая и непонятная.

Это так кажется, когда ученый занимается схожими проблемами в течение многих лет, так или иначе образуются куски кода, кочующие от задачи к задаче. Не переписывать же их под каждую новую задачу? Так и получается, что плохой код только множится. А потом его поддержка ложится на плечи аспирантов, студентов. По-моему, здесь большая проблема научного сообщества: деньги выделяются только на исследования, поэтому на разработку вменяемого научного тула их никогда нет. Сами работники науки не в состоянии этого сделать, ибо это тяжелый и затратный в плане денег и времени труд. С другой стороны, изучать языки на серьезном уровне дядя в очечках тоже не хотят — не барское это дело. Вот и жрут, что дают. И по-моему, в масштабах науки в целом эта задача неразрешимая. А вот в отношении конкретных людей и конкретных задач — вполне подъемная задача. И здесь нужно давать возможность выбора, а без него вы так и приедете в тупик.

И да, Python не навязывают — он сам заводится.

Не навязывают, но и альтернатив не дают, что почти одно и то же.

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

Предлагаете выбор из сортов г@#на?

Я не считаю Python говном. Так что ты выбираешь?

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

Да. И вместо изучения тем, непосредственно связанных с ЦОС, провести 90% времени за изучением python, numpy и scipy.

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

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

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

Расчеты делал на сишке и плюсах, никаких проблем. Прототипирование — тут что угодно подойдет, все равно го@#окод.

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

Расчеты делал на сишке и плюсах, никаких проблем.

Я не спрашивал, что лично ты использовал.

Прототипирование — тут что угодно подойдет, все равно го@#окод.

То есть ты не против Python, окей.

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

И вместо изучения тем, непосредственно связанных с ЦОС, провести 90% времени за изучением python, numpy и scipy.

Тебе уже советовали расслабиться?

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

в виде скриптов снаружи, готовящих входные данные и парсящие выходные

в случае других языков программирования входные-выходные данные в произвольном виде используются без поределённого представления? или о чём идёт речь?

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

число символов в программе на Fortran превышает миллион

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

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

То есть преподавать цифровую обработку сигналов без таких слов как fft или понимания того, что «вектор отсчетов сигнала» на практике будет «массив чисел float»?

Если после ЦОС-а будет курс «а теперь тоже самое моделируем на машине в условиях, приближенных к реальным», то да. По моим ранним впечатлениям маткад не шибко развивает способность к использованию машины для моделирования, а просто позволяет «меньше париться с построением графиков и некоторыми вычислениями», но не моделированием.

omegatype ★★ ()

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

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