Pull to refresh

Python(x, y)

Reading time 9 min
Views 53K
imagePython(x, y) — набор библиотек и программного обеспечения для численных расчетов, анализа и визуализации данных на основе Python. IDE представлены IDLE, Eclipse и Spyder, основой GUI избран Qt. Я расскажу вкратце о модулях, относящихся к самому Python, приведу несколько примеров их работы. Во время установки можно выбрать только то, что нужно, поэтому стоит разобраться что к этому нужному отнести. Кроме того, рассказ о модулях может пригодиться и сам по себе, поскольку их можно установить и по отдельности. Порядок следования модулей повторяет порядок оригинальной страницы и список чекбоксов установки.

Python — стандартные библиотеки, сейчас используется Python 2.6.5
Spyder (Scientific PYthon Development EnviRonment) — IDE для интерактивных вычислений и визуализации данных, документация
formlayout — создание форм диалогов/виджетов для редактирования каких-то вводимых параметров без написания GUI-кода. Например:

Copy Source | Copy HTML<br/>from formlayout import fedit<br/> <br/>datalist = [('Name', 'Paul'),<br/>            ('Age', 30),<br/>            ('Sex', [ 0, 'Male', 'Female']),<br/>            ('Size', 12.1),<br/>            ('Eyes', 'green'),<br/>            ('Married', True),<br/>            ]<br/> <br/>print "result:", fedit(datalist, title="Describe yourself",<br/>                       comment="This is just an <b>example</b>.") <br/>



И видим действие кода с fedit():
result: [u'Paul', 30, 'Male', 12.1, u'#008000', True]

PyQwt — привязка Python к библиотеке Qwt для построения двумерной графики на Qt, примеры
wxPython — альтернативная GUI библиотека. Хотя очевидно, что здесь всюду продвигается PyQt, она нужна для популярного набора программ ETS, а также отладчика winpdb
NumPy — популярный модуль для высокоэффективной работы с многомерными массивами (ядро модуля SciPy), краткое введение в NumPy
SciPy — содержит модули для математической оптимизации, интегрирования, специальных функций, обработки сигналов, обработки изображений, генетических алгоритмов, решения обыкновенных дифференциальных уравнений и многих других задач
numexpr — быстрое вычисление выражений для элементов массивов с помощью векторной виртуальной машины. Например:

Copy Source | Copy HTML<br/>>>> import numpy as np<br/>>>> import numexpr as ne<br/>>>> a = np.arange(10)<br/>>>> a<br/>array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9])<br/>>>> b = np.arange( 0, 20, 2)<br/>>>> b<br/>array([  0, 2, 4, 6, 8, 10, 12, 14, 16, 18])<br/>>>> c = ne.evaluate("2*a+3*b")<br/>>>> c<br/>array([  0, 8, 16, 24, 32, 40, 48, 56, 64, 72]) <br/>


guidata — автоматическое создание GUI для удобного ввода данных и их показа, простейший из примеров:

Copy Source | Copy HTML<br/>import guidata<br/>guidata.qapplication()<br/> <br/>import guidata.dataset.datatypes as dt<br/>import guidata.dataset.dataitems as di<br/> <br/>class Processing(dt.DataSet):<br/>    a = di.FloatItem("Parameter #1", default=2.3)<br/>    b = di.IntItem("Parameter #2", min= 0, max=10, default=5)<br/>    type = di.ChoiceItem("Processing algorithm",<br/>                         ("type 1", "type 2", "type 3"))<br/> <br/>param = Processing()<br/>param.edit() <br/>



guiqwt — инструменты быстрого создания GUI, более объемная реализация идей предыдущего модуля, страница с примерами
Matplotlib — графическая 2D- и псевдо 3D-библиотека, имеющая во многих случаях синтаксис близкий к MATLAB, что позволяет опытным пользователям последнего быстро переучиваться; у Matplotlib имеется обширная галерея примеров получаемых изображений с сопутствующим кодом, что хорошо помогает войти в курс дела, также я писал о Matplotlib в 9 и 10 уроках курса на Викиверситете
gnuplot — еще один распространенный пакет для построения кривых и поверхностей
PIL (Python Imaging Library) — работа с растровой графикой различных форматов, чтение и запись, конвертирование, редактирование и так далее
IPython — замена стандартного Python shell, обладающая расширенными возможностями, об использовании IPython есть хороший рассказ на хабре
SetupTools — библиотека, позволяющая автоматически загружать, собирать, устанавливать и управлять пакетами языка Python, находящимися в репозитории модулей PyPI (Python Package Index) подобно пакетным менеджерам
ETS (Enthought Tool Suite) — большой самостоятельный пакет программ, в котором наиболее интересным, наверное, является средство 3D-визуализации Myavi
VTK — программное обеспечение для визуализации, 3D графики, объемной прорисовки и обработки изображений
ITK — программное обеспечение для обработки изображений из области медицины
mxeGenix.com mx Distribution, содержит модули для упрощения обработки данных различных типов: mxDateTime (преобразование и парсинг различных форматов дат и времени), mxTextTools (парсинг текста и поисковые алгоритмы), mxProxy, mxBeeBase (управление небольшими базы данных), mxURL, mxUID, mxStack, mxQueue и mxTools
pydicom — обработка медицинских изображений стандарта DICOM
PyOpenGL — работа с OpenGL, известного интерфейса для написания приложений, использующих двумерную и трёхмерную компьютерную графику
VPython — создание трехмерных интерактивных моделей физических систем
SymPy — математическая библиотека для символьных вычислений, о ней я когда-то сделал урок на Викиверситете
cvxport — библиотека выпуклой оптимизации
PyWavelets — модуль вейвлет-преобразований
scikits.timeseries — набор инструментов для анализа временных рядов
pyopencv — работа с библиотекой алгоритмов компьютерного зрения OpenCV
NetworkX — создание, манипуляция и исследования структур, динамики и функций сложных сетей, графов, например:

Copy Source | Copy HTML<br/>import networkx as nx<br/>import matplotlib.pyplot as plt<br/> <br/>G=nx.random_geometric_graph(200, 0.125)<br/>pos=G.pos # position is stored as member data for random_geometric_graph<br/> <br/># find node near center (0.5,0.5)<br/>dmin=1<br/>ncenter= 0<br/>for n in pos:<br/>    x,y=pos[n]<br/>    d=(x- 0.5)**2+(y- 0.5)**2<br/>    if d<dmin:<br/>        ncenter=n<br/>        dmin=d<br/> <br/># color by path length from node near center<br/>p=nx.single_source_shortest_path_length(G,ncenter)<br/> <br/>plt.figure(figsize=(8,8))<br/>nx.draw_networkx_edges(G,pos,nodelist=[ncenter],alpha= 0.4)<br/>nx.draw_networkx_nodes(G,pos,nodelist=p.keys(),<br/>                       node_size=80,<br/>                       node_color=p.values(),<br/>                       cmap=plt.cm.Blues)<br/> <br/>plt.xlim(- 0.05,1.05)<br/>plt.ylim(- 0.05,1.05)<br/>plt.axis('off')<br/>plt.show() <br/>



MDP — модульный набор инструментальных средств для обработки данных — набор управляемых и самообучающихся алгоритмов
PyTables — пакет основан на HDF5 библиотеке управления большими иерархическими структурами данных
vitables — графический инструмент для просмотра и редактирования файлов в HDF5 и PyTables форматах
h5py — интерфейс для HDF5 файлов (в отличие от PyTables, h5py обеспечивает прямой доступ к полной библиотеке HDF5 С)
pyhdf — интерфейс для файлов HDF4
netcdf4 — работа с netCDF4 (Network Common Data Form), набором библиотек программного обеспечения и машинно-независимого формата данных, которые поддерживают создание, доступ и обмен ориентированных на массивы научных данных
GDAL (Geospatial Data Abstraction Library) — работа с данными о геопространстве
PP (Parallel Python) — параллельное выполнение кода Python на системах с несколькими процессорами или ядрами, примеры
SendKeys — Python модуль для Windows, который может отправить одно или несколько нажатий клавиш или комбинации клавиш в активное окно. Можно даже забыть на время о таких целях и сделать шалость, например:

Copy Source | Copy HTML<br/>import SendKeys<br/>SendKeys.SendKeys("""<br/>    {LWIN}<br/>    {PAUSE .25}<br/>    {UP 3}<br/>    {ENTER}<br/>    {PAUSE 1}<br/>    notepad{ENTER}<br/>    {PAUSE 2}<br/>    Hello{SPACE}World!<br/>    {PAUSE 3}<br/>    %{F4}<br/>    {PAUSE 2}<br/>    {RIGHT}<br/>    {PAUSE 1}<br/>    {ENTER}<br/>    """) <br/>


Что здесь происходит? В точности то, что делал бы я в отсутствии мыши, для того, чтобы получить тот же результат, который получится. Я нажал бы левую клавишу windows {LWIN}, то есть зашел в меню «Пуск» своего Windows XP, потом три раза клавишу «вверх» {UP 3}, так я перешел к «Выполнить...», нажал бы клавишу {ENTER}, набрал notepad и запустил так блокнот, написал в нем типичное HelloWorld, закрыл с помощью alt-f4, что записывается как %{F4}, появился типичный диалог о сохранении данных «Да Нет Отмена», нажал клавишу {RIGHT}, чтобы выбрать «Нет» и {ENTER}. Паузы нужны, чтобы успели открыться необходимые программы и ввестись соответствующие символы.

Одновременно с исполнением этого кода не стоит стоять под деревом что-то делать, поскольку активное окно переключится и нарушится последовательность команд. Тогда, к слову, в моем примере может произойти {LWIN} {UP} {ENTER}{RIGHT} {ENTER} и компьютер выключится. Конечно, этот модуль можно использовать и более разумно, для того же упрощения обычной обработки событий.

pywinauto — набор модулей для автоматизации Microsoft Windows GUI (действия мыши и клавиатуры)
pyvisa — контроль всех видов измерительных устройств с помощью различных шин (GPIB, RS232, USB)
PyParallel — библиотека доступа к параллельному порту
PySerial — библиотека доступа к последовательному порту
Cythonязык, основанный на Python, позволяющий более плотно использовать скоростные возможности С
psyco — модуль, позволяющий повысить скорость выполнения кода на Python, причем во многих случаях достаточно лишь перед основным кодом добавить всего две строчки (или чуть больше, если обернуть их в try-except ImportError):

Copy Source | Copy HTML<br/>import psyco<br/>psyco.full() <br/>


py2exe — инструмент, который преобразует Python сценарии в автономные исполняемые файлы Windows, о нем немного написано на хабре
Sphinx — инструмент для генерации документации, использующий в качестве языка разметки reStructuredText; с помощью Sphinx оформлена и документация самого Python, и самого Sphinx, и многих других библиотек, входящих в Python(x, y)
docutils — текстовый процессор перевода документации из простого текста в полезные форматы, такие как HTML, XML или LaTeX (включая reStructuredText)
pygments — подсветка исходного кода, понимает большинство используемых языков, умеет выдавать на выходе html, картинки, LaTeX и так далее
ReportLab — создание pdf-документов
rst2pdf — инструмент для преобразования reStructuredText в PDF с использованием ReportLab
simplejson — простой, быстрый JSON (JavaScript Object Notation) кодер / декодер
xlrd — извлечение данных из файлов Microsoft Excel, статья на хабре
xlwt — создание файлов электронных таблиц, совместимых с Microsoft Excel, OpenOffice.org Calc и Gnumeric
pylint — анализ кода на поиск ошибок и плохих мест, достаточно запустить из командной строки pylint example.py и pylint выведет большую сводку того, что думает о вашем коде, пример
winpdb — интерактивный отладчик программ
Tags:
Hubs:
If this publication inspired you and you want to support the author, do not hesitate to click on the button
+80
Comments 18
Comments Comments 18

Articles