Использование Linux в качестве платформы для научных вычислений

Перемалывайте цифры с помощью Sage и Python

Операционная система Linux® является отличной платформой для научных вычислений и активно используется учеными для выполнения различных задач. Хотя существует множество Open Source-проектов для научных вычислений, математический проект Sage обладает более универсальными возможностями для решения различных проблем. Python – это основной язык программирования для многих научных приложений самого высокого уровня, о которых пойдет речь в этой статье.

Пол Феррилл, технический директор, ATAC

Пол Феррилл (Paul Ferrill) уже более 20 лет пишет статьи, посвященные различным аспектам информационных технологий. Пол начинал с написания обзоров сетевых продуктов, таких как LANtastic и ранние версии Novell Netware, для журнала PC Magazine. Пол обладает степенями магистра и бакалавра в области электротехники и имеет опыт разработки ПО для самых разнообразных платформ и архитектур.



05.02.2013

Linux в научном сообществе

Тот факт, что операционная система Linux прочно обосновалась в научном сообществе, не должен вызывать удивления. Решения варьируют от высокопроизводительных вычислительных кластеров и до программного обеспечения для визуализации. Существует даже отдельный дистрибутив Linux на основе Red Hat Enterprise Linux, предназначенный для научных вычислений – Scientific Linux.

Sage и Enthought Python Distribution

В этой статье рассматриваются два варианта использования Linux в качестве платформы для научных вычислений. Первый – это математическая Open Source-система Sage, второй – среда разработки Enthought Python Distribution (EPD). В обоих случаях используется ряд базовых Open Source-инструментов Python, выполняющих за кадром все сложные задачи. Если вы хотите попробовать поработать с этими решениями, то установите требуемые компоненты с помощью менеджера приложений Ubuntu.

Система Sage является более исчерпывающей в том плане, что она является в большей степени оболочкой над различными механизмами вычислений. Командная строка Sage позволяет взаимодействовать даже с такими коммерческими продуктами, как MATLAB или Mathematica. Работая в командной строке Sage вы, по существу взаимодействуете с оболочкой IPython, получая доступ ко всем ее функциональным возможностям. Когда вы начнете изучать Sage, вам также придется мыслить в терминах объектов и методов. Sage включает в себя ряд систем компьютерной алгебры и позволяет пользователю взаимодействовать с ними из командной строки.

Важно отметить, что, хотя система Sage основана на Python, она выполняет предварительный анализ каждого выражения, прежде чем передать его интерпретатору Python. Если может привести к некоторой путанице, если смотреть на простые интерактивные команды Sage. Причина состоит в желании сделать набор команд в Sage как можно более интуитивным с математической точки зрения. Хорошим примером является символ возведения в степень. В чистом Python для возведения двойки в четвертую степень необходимо набрать команду 2**4. В Sage для этого используется знак верхней стрелки (^), т. е. выражение имеет вид 2^4. Кроме того Sage обрабатывает некоторые операторы (например, целочисленное деление) иначе, чем базовый Python.

NumPy и SciPy

Два наиболее известных расширения, лежащих в основе Sage и EDP – это NumPy и SciPy. Оба проекта существуют примерно с середины-конца 1990-х и изначально были разработаны Трэвисом Олифантом (Travis Oliphant), который сейчас работает в компании Enthought. NumPy содержит основные численные методы для работы с массивами и матрицами. SciPy базируется на пакете NumPy в части структуры базовых массивов данных и содержит множество модулей, позволяющих выполнять самые разнообразные задачи – начиная от линейной алгебры и заканчивая обработкой сигналов. Компания Enthought является спонсором обоих проектов и продолжает активно развивать и создавать их новые версии.


Инсталляция Sage

Установку Sage можно выполнить различными способами. Чтобы познакомиться с системой Sage, не устанавливая ее, можно использовать версию в виде Live-CD. Можно запустить Live-CD в виртуальной машине, например в VM VirtualBox или VMware Player. В этой статье мы рассмотрим установку Sage как на физическую, так и на виртуальную машину, работающие под управлением последней версии операционной системы Ubuntu (12.04).

Инсталляция на физический компьютер

Поскольку операционная система Ubuntu 12.04 была выпущена лишь недавно, то самый надежный способ установить Sage заключается в установке из исходного кода. Загрузите tarball-файл с исходным кодом и распакуйте его в какую-нибудь директорию. Прежде чем приступить к сборке Sage, необходимо установить несколько зависимостей с помощью следующих команд:

sudo apt-get install build-essential gfortran
sudo apt-get install texlive xpdf evince

sudo apt-get install tk8.5-dev

После того как все зависимости будут установлены, можно приступить к сборке Sage. Для этого выполните следующую команду:

make

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

Рисунок 1. Экран сборки Sage
Экран сборки Sage

Инсталляция на виртуальную машину

Установка на виртуальную машину удобна, если вы не хотите выполнять лишние действия, а хотите просто приступить к работе с Sage. На Web-сайте Sage вы можете загрузить пакет Open Virtualization Archive (OVA), а также двоичные пакеты для Fedora 16 и Ubuntu 10.04.3. OVA представляет собой единый пакет (по существу, это tar-файл), содержащий все файлы, необходимые для запуска виртуальной машины в формате Open Virtualization Format (OVF).


Использование Sage

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

Интерфейс командной строки

Для запуска текстовой версии Sage перейдите в директорию установки и наберите в командной строке следующую команду:

./sage

На рисунке 2 показан пример интерпретатора Sage и нескольких математических выражений, уже упомянутых ранее.

Рисунок 2. Интерфейс командной строки и математические выражения Sage
Интерфейс командной строки и математические выражения Sage

Отличие в целочисленном делении связано с тем, как Python обрабатывает различные типы операций (целочисленные, с плавающей точкой и т. д.). В языке Python результатом выражения 2/3 является целочисленное значение, округляемое в меньшую сторону до нуля. Sage воспринимает оператор деления в качестве конструктора, работающего с рациональными числами; это означает, что вы можете выполнять операции над дробями так же, как на бумаге. Например, если вы наберете в командной строке Sage выражение 2/3 + 2/3, то получите результат 4/3. Если же вы наберете то же самое выражение в Python, то результатом будет 0. Вы можете неявно задавать тип литералов с помощью конструкций float() или int(), как показано на рисунке 2.

Web-интерфейс

Для использования инструмента Notebook можно либо набрать notebook() после запуска Sage, либо выполнить следующую команду:

./sage --notebook

В результате запустится сервер Sage и в Web-браузере по умолчанию откроется домашняя страница Sage Notebook. В этом приложении вы найдете много полезных функций, упрощающих работу, таких как сохранение и загрузка рабочих листов из файла, а также обычные функции копирования, удаления и переименования. Sage упрощает совместную работу благодаря функциям Share и Publish, показанным на рисунке 3.

Рисунок 3. Возможности Sage Notebook
Возможности Sage Notebook

Пакеты компьютерной алгебры

Базовый дистрибутив Sage содержит ряд пакетов компьютерной алгебры, включая GAP, Maxima, PARI и Singular. Каждый пакет поддерживается своим отдельным сообществом и обладает слегка отличной от других функциональностью. Главное, что все эти пакеты входят в состав базового дистрибутива Sage, поэтому их не нужно загружать и устанавливать отдельно.

На рисунке 4 показан пример использования пакета Maxima для выполнения различных матричных операций. Все это делается в Sage Notebook, при этом вводимые пользователем данные отображаются черным цветом, а получаемые результаты – синим. В первых двух строках создается матрица с элементами, равными i/j, где переменные i и j принимают значения от 1 до 4. Заметьте, что это рациональные числа (дроби).

Рисунок 4. Матричные операции в Maxima
Матричные операции в Maxima

Публикация научных трудов

Публикация научных трудов является обязательным требованием для многих научных сообществ. Каждый объект в Sage должен соответствовать формату разметки LaTeX. Это требование напрямую связано с необходимостью создания текстовых и графических материалов для публикаций, соответствующих всем необходимым требованиям, с помощью языка TeX. Учтите, что для использования всех имеющихся возможностей Sage необходимо выполнить полную инсталляцию TeX.


Инсталляция EPD

Научные вычисления в Python – это то, чем, по сути, занимается компания Enthought. Enthought зарабатывает на продаже и поддержке коммерческих продуктов, однако при этом она вносит существенный вклад в Open Source-сообщество, непосредственно работая с базовым кодом проектов NumPy и SciPy, выступая на ежегодных конференциях PyCon и являясь организатором конференций SciPy.

Для инсталляции различных компонентов, необходимых для работы с IPython, NumPy и SciPy, можно просто загрузить и инсталлировать бесплатную версию EPD, которая называется EPD Free. Компания Enthought предлагает 32- и 64-разрядные версии EPD Free, протестированные в Red Hat, Ubuntu и openSUSE. Компания предупреждает, что некоторые 64-разрядные операционные системы Linux не содержат 32-разрядных библиотек, что приводит к необходимости инсталляции 64-разрядной версии пакета.

Для инсталляции EPD Free загрузите установочный сценарий и запустите его при помощи следующей команды:

bash epd_free-7-2-2-rh5-x86.sh

Чтобы упростить запуск EPD в будущем, необходимо добавить несколько строк в файл запуска командной оболочки (в файл either .cshrc либо .bash_profile). В Ubuntu по умолчанию используется командная оболочка bash, поэтому ниже приведен пример именно для bash. В данном случае я добавил следующую строку:

export PATH=/home/paul/Downloads/epd_free-7.2-2-rh5-x86_64/bin:$PATH

Использование EPD

IPython – это еще один общий знаменатель EPD и Sage, служащий главным инструментом пользовательского интерфейса. Так же, как и в случае с Sage, с EPD можно работать как в командной строке, так и в графической оболочке Notebook.

Интерфейс командной строки

Функциональность консоли на основе Qt немного расширена и помимо прочего включает полную подсветку синтаксиса (для этого используется библиотека Pygments), а также позволяет создавать встроенные графики. Чтобы воспользоваться этими возможностями, запустите IPython с помощью следующей команды:

ipython --pylab

На рисунке 5 изображена консоль Qt и встроенный график.

Рисунок 5. Создание нового проекта PyDev
Создание нового проекта PyDev

Web-интерфейс

Последняя версия IPython (0.12) содержит Web-интерфейс Notebook, похожий на Web-интерфейс Sage. Для использования функциональности Notebook необходимо инсталлировать несколько зависимостей, включая ZeroMQ и Web-сервер Tornado. Для запуска Notebook из командной строки наберите в окне терминала следующую команду:

ipython notebook

В результате запустится Web-механизм Tornado и в Web-браузере по умолчанию откроется страница с инструментальной панелью. Если вы выберете блокнот по умолчанию, то увидите новое окно, изображенное на рисунке 6.

Рисунок 6. Интерфейс iPython Notebook
Интерфейс iPython Notebook

В Web-версии блокнота есть одна особенность, заключающаяся в том, что если вам нужно выполнить код, то необходимо нажать Control-Enter. Благодаря этому можно вводить несколько строк кода, как на рисунке 6, а затем последовательно выполнять все набранные команды. Таким образом, можно легко разбивать функции на обозримые блоки.

Можно добавлять к своим заметками комментарии, используя для этого синтаксис Markdown. Если вы не знакомы с Markdown, то, по существу, это способ создания форматированного HTML-содержимого с помощью обычного текста. Например, одинарный символ решетки (#), за которым следует пробел, означает тег H1 в языке HTML, два символа решетки означают тег H2 и т. д. Это позволяет добавлять комментарии к графикам и коду.

Pandas

Библиотека Python Data Analysis Library (pandas) – это еще один связанный с SciPy и NumPy инструмент, созданный специально для выполнения анализа данных. Pandas содержит большое количество библиотек, а также ряд стандартных моделей данных, позволяющих эффективно работать с большими наборами данных. Одним из самых распространенных способов передачи данных между участниками совместного проекта являются CSV-файлы (значения, разделенные запятыми). Pandas содержит оптимизированную библиотечную функцию для чтения и сохранения данных в различных файловых форматах, включая форматы CSV и HDF5.

Модуль read_csv умеет анализировать типовые CSV-файлы, содержащие в первой строке заголовочную информацию. Встроенный синтаксический анализатор позволяет также работать с файлами, содержащими значения даты и времени. В состав Pandas включен модуль datetools, содержащий большой набор процедур для выполнения различных вычислений, связанных с датами. В листинге 1 показан фрагмент кода из документации pandas, объясняющий, как находить дату, отличающуюся на 4 месяца и 5 дней от указанной.

Листинг 1. Пример вычисления даты в Pandas
d = datetime(2012, 4, 20)
d + pandas.DateOffset(months=4, days=5)
datetime.datetime(2012, 8, 25, 0, 0)

Pandas блестяще справляется с разделением больших объемов данных на части. После того как вы импортируете ваши данные в поддерживаемую структуру, в вашем распоряжении окажется большой набор инструментов для выполнения буквально всех типов операций. Вы сможете разделять данные с помощью стандартного синтаксиса Python, выполнять операции над всеми данными или над их частью и строить на их основе графики с помощью библиотеки matplotlib. Если вам необходимо выполнять какие-либо действия с данными, то pandas наверняка поможет вам сделать это быстрее и эффективнее.


Заключение

Linux несомненно является отличной платформой для любых научных вычислений. Linux широко поддерживается научной общественностью и стремительно набирает популярность у новых пользователей, желающих снизить затраты на программное обеспечение. Инструменты Linux вполне позволяют заменить коммерческие продукты, при этом являясь абсолютно бесплатными. Для тех заказчиков, которым необходимо иметь полную поддержку программного обеспечения, существуют коммерческие решения EPD от компании Enthought с полной клиентской поддержкой и услугами по обучению.

Ресурсы

Научиться

Получить продукты и технологии

Обсудить

Комментарии

developerWorks: Войти

Обязательные поля отмечены звездочкой (*).


Нужен IBM ID?
Забыли Ваш IBM ID?


Забыли Ваш пароль?
Изменить пароль

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Профиль создается, когда вы первый раз заходите в developerWorks. Информация в вашем профиле (имя, страна / регион, название компании) отображается для всех пользователей и будет сопровождать любой опубликованный вами контент пока вы специально не укажите скрыть название вашей компании. Вы можете обновить ваш IBM аккаунт в любое время.

Вся введенная информация защищена.

Выберите имя, которое будет отображаться на экране



При первом входе в developerWorks для Вас будет создан профиль и Вам нужно будет выбрать Отображаемое имя. Оно будет выводиться рядом с контентом, опубликованным Вами в developerWorks.

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

Обязательные поля отмечены звездочкой (*).

(Отображаемое имя должно иметь длину от 3 символов до 31 символа.)

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Вся введенная информация защищена.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Linux, Open source
ArticleID=857433
ArticleTitle=Использование Linux в качестве платформы для научных вычислений
publish-date=02052013