четверг, 30 сентября 2010 г.

Python для студента

Python это простой для освоения, открытый интерпритируемый язык. Но чем он полезен студенту? Кроме всех перечисленных свойств он имеет кучу открытых расширений.
Пройдемся по некоторым:
Numpy это библиотека матричных вычислений на Python. Его особенностью является использование С++ и С кода для реализации матричных вычислений.Это дает хороший прирост скорости,так как все эти операции сразу используют скомпилированные расширения python, написанные на С/С++ c использованием низкоуровневой библиотеки  LAPPACK(решатель задач линейной алгебры). Эта же библиотека лежит в основе MATLAB
Но одной линейной алгебры мало нам и по сему обратим свой взор к Scipy она использует numpy и предоставляет такие возможности(взято из Википедии):
Доступные субпакеты

  • constants: Физические константы и коэффициенты пересчёта (с версии 0.7.0)
  • cluster: Векторное квантование
  • fftpack: Дискретные алгоритмы преобразования Фурье
  • integrate: Инструменты для интегрирования
  • interpolate: Инструменты для интерполяции
  • io: Ввод/вывод данных
  • lib: Врапперы Python для внешних библиотек
  • linalg: Линейная алгебра
  • misc: Разные утилиты
  • optimize: Средства оптимизации
  • sandbox: Экспериментальный код
  • signal: Обработка сигналов
  • sparse: Поддержка разреженных матриц
  • special: Специальные функции
  • stats: Статистические функции
  • weave: Позволяет включение кода C/C++ внутри кода Python

Дополнительная функциональность:
Основной функционал SciPy расширяется за счёт других инструментов.
Например:
Графика. На данный момент рекомендованным пакетом для отрисовки двухмерной графики является Matplotlib, тем не менее существует множество других, например HippoDraw, Chaco, и Biggles. Также популярными являются Python Imaging Library и MayaVi (для 3D визуализации)
Оптимизация. Хотя SciPy имеет свой пакет для оптимизации, OpenOpt имеет доступ к большему количеству оптимизационных пакетов и решателей
Продвинутый анализ данных. При помощи RPy, SciPy обеспечивает интерфейс к статистическому пакету R предназначенному для сложного анализа данных.
База данных. SciPy может взимодействовать с  PyTables, иерархической базой данных разработанной для эффективного управления большими объёмами данных на основе HDF5.
Интерактивная оболочка. IPython это интерактивная среда которая обеспечивает дебаггинг и создание кода в стиле близком к MATLAB. Ну что ж мне кажется Вики все вполне хорошо описала для затравки.
Символьная математика. Существует несколько библиотек для Python, такие как PyDSTool, Symbolic и SymPy-- которые позволяют работать с символьной математикой.Библиотеки
Как видите это довольно серьезный набор для математика.Кроме того такие библиотеки как NetworkX,Boost.Python,igraph позволяют работать со структурами типа графов.  
    Если же касаться вопроса о символьной математике детальней, то остановемся на Sympy
Это библиотека позволяет дифференцировать, интегрировать, раскладывать в ряды и производить упрощения символических выражений. Библиотека свободная для использования под лицензией BSD, а по сему вы можете делать на ее основе и коммерческие продукты. В конце статьи будут приведены некоторые дополнительные ссылки.
А если мы хотим написать игру? Пожалуйста BSD библиотека PyGame спешит нам на помощь.Она позволит нам:
Создать нестандартный интерфейс
Работать с текстурами
Звуком
Другими графическими файлами
Библиотека использует средства OpenGL. Кроссплатформеная. Легка в инсталяции. На ее основе сделаны различные разработки в области графики кроме 2D игр.
Кстати если вы психолог, то вас может заинтересовать система проведения экспериментов в области восприятия PsychoPy. Это открытая разработка интгерирующая в себе инструменты для проведения экспериментов и их последующую численную обработку. Начинается все с того что вы пишите python скрипт, который описывает будущий эксперимент. Затем уже по его результатам система позволит провести различные статистические рассчеты по его результатам. Поддерживается весьма широкий спектр статических и прочих математических функций.
  А захотелось нам например реализовать задачи связанные со сложной обработкой и анализом текстов. Пожалуйста! для этого у нас есть такой инструмент как NLTK (опять же под лицензией Apache).Эта библиотека разработана для того, чтобы предоставить инструменты анализа слов, синтаксического анализа и максимально облегчить работу с информацией текстового характера. Вокруг этой библиотеки реализовано много академических и учебных проектов. Кроме того на основе этой библиотеки написан учебник по синтаксическому анализу и прочим вопросам работы с текстовой информацией: Natural Language Processing with python.Книжечка зарубежная и непереведенная, но сама в рунете есть. Можете поискать ее в списке книг на форуме сайта python.su 
На самом деле есть еще большое множество иных библиотек, которые в обзор не попали. А для многих компонентов Linux и OpenSource приложений поставляются python-библиотеки, открывающие доступ к возможностям последних. Вобщем возможности python заслцуживают внимания:)
Ссылки:
Расширения Python,упомянутые в заметке:

  1. Библиотека Numpy 
  2. Библиотека Scipy
  3. Библиотека Sympy
  4. Библиотека   анализа данных, имитации систем и физ. процессов  PyDSTool    
  5. Библиотека  NetworkX
  6. Библиотека Boost.Python
  7. Библиотека igraph
  8. Комплекс Psychopy
  9. Библиотека NLTK 
  10. библиотека Pygame
Статьи:
  1. Программирование и научные вычисления на языке Python

  2. Математический Python
  3. Анализ социального графа
              


      понедельник, 27 сентября 2010 г.

      автоматизируем Linux: установка многих пакетов в один присест

      Допустим каждый раз нам приходится устанавливать группу пакетов на машины. Все это набивать каждый раз в консоли утомительно, но та же консоль может снять с нас эту рутину. Все достаточно просто, напишем такой скриптик:
      apt-get install djview python-djvu
      При чем в строчку через пробел можно вписывать любое количество пакетов. Запускать надо его из под sudo таким образом(предположим что сохранили мы его в myinst.sh):
        sudo ./myinst.sh
      ./ заставит оболчку просмотреть тот каталог где вы сейчас находитесь