PyQt» (PMP)

advertisement
Создание программных
компонент для визуализации
данных посредством
интеграции «Python»,
«Matplotlib» и «PyQt» (PMP)
Велешки С.И., Петухова Т.Б.
Кирилов А.С., Мурашкевич С.М.
Дубна 2011
Содержание
•
•
•
•
•
•
Общие сведения о «Sonix+»
Постановка задачи
Общие сведения о «PMP»
Создание компонента с помощью «PMP»
Созданные программны
Выводы
Программный комплекс «Sonix+»
«Sonix+» образован
набором модулей:
 управляющих
компонентами
спектрометра
(драйверы, серверы);
 выполняющих
обработку данных;
 пользовательского
интерфейса;
 визуализация данных.
Пользовательский интерфейс «Sonix+»
Включает в себя следующих программ:
 Sci – программа загрузки/выгрузки управляющих
модулей «Sonix+»;
 Reflector – отображает текушее состояние параметров
всех устройств;
 AxisControl – предназначена для ручного управления
подвижными частями спектрометра;
 SpectraViewer – визуализация спектров;
 и другие.
Возможности «SpectraViewer»
Данная программа обладает следующие возможности:
 строить линейную графику (выводить линий с
значениями x,y);
 строить карту плотности (выводить двумерный массив);
 маштабирование и перемещение спектра;
 отображение спектра в линейном и логарифмичном
масштабе;
 настройки параметров сетки;
 выделение области суммирования с помощью курсоров;
 вывод на печать отображаемого спектра и проекции.
Недостатки «SpectraViewer»
Недостатки программы:
 очень сложно вносить изменения;
 невозможно интегрировать ее в другие программы;
 сложно изменять формат данных;
 предназначена для работы только с точечными
детекторами и 1D ПЧД;
 не использует доступные графические библиотеки.
«SpectraViewer»
«SpectraViewer» – Вывод данных с точечных детектров
«SpectraViewer»
«SpectraViewer» – Вывод 1D ПЧД
Постановка задачи
Найти
технологию
позволяющую
Компонент «A»
содавать
Объединение компонентов
Компонент «Z»
Программа визуализации
Компонент «A»
Программный комплекс
Компонент «B»
Компонент «Z»
Sonix+
В
з
а
и
м
о
д
е
й
с
т
в
и
е
Требования к выбираемой технологии
Выбраемая технология должна:
 использовать готовую библиотеку, например,
«Matplotlib»;
 предоставлять возможность взаймодействия с
языками программирования C++ и Python;
 обладать объектно-ориентированую архитектуру;
 предоставлять возможность создания собственных
виджетов и их объединения между собой;
 позволять просто и быстро создавать графический
интерфейс;
Общие сведения о «PMP»
 «Matplotlib» - библиотека языка «Python», предназначенная
для визуализации данных. Используется в комплексе
«WebSonix+»;
 «PyQt» - представляет собой инструмент для создания GUI
(графических) приложений. «PyQt» представляет собой
сочетание языка программирования «Python» и превосходной
библиотеки «Qt»;
 «Python» - скриптовый язык программирования. Основные
черты – динамическая типизация, автоматическое управление
памятью, полная интроспекция, обработка исключения,
многопотомчных вычислении и т.д.
Пользовательский интерфейс
библиотеки «Matplotlib»
Библиотека «Matplotlib» предоставляет возможность ее
внедрения в графического приложения созданного с
помощью:
 Графической библиотеки «Tkinter»;
 Графической библиотеки «PyGTK»;
 Графической библиотеки «PyQt».
Сравнение графических библиотек
Tkinter
PyGTK
PyQt
Сложно
возможные проблемы
во время загрузки
Просто
создание динамически
меняющихся форм
+
+
+
управления компоновки
интерфейса
Сложно
Сложно
Просто
Отсутствует
Glade
Qt Designer
сохранение
интерфейса в виде XML
файл
-
+
+
кроссплатформеность
полная документация
+
+
+
-
+
+
простота
использования
интегрированая среда
разработки
Выбранные средства
Были выбранные следующие:
 Библиотека «Matplotlib» для вывода графиков
(встроенные возможности);
 Графическая библиотека «PyQt» для оформление
внешнего интерфейса;
 Язык Python для объединения «Matplotlib» и «PyQt»;
 «Qt Designer» для оформление интерфейса в виде XML
дерева;
 Утилита «Pyuic4» для перевода XML дерева в коде на
языке «Python»;
 Утилита «Pyinstall» для создания программы в виде
exe-файла.
Визуализация одномерных графиков
«Component Simple Line»
Визуализация двухмерных графиков (1D ПЧД)
«SpectraViewer 2D»
Визуализация трехмерных графиков
«SpectraViewer 3D» – Владка XY
Визуализация трехмерных графиков
«SpectraViewer 3D» – Владка XZ
Визуализация трехмерных графиков
«SpectraViewer 3D» – Владка YZ
Использование созданных компонент
Созданные компоненты были использованные в программе юстировки ICE.
«ICE» – вкладка «ControlPanel»
Визуализация одномерного графика в
программе ICE
«ICE» – вкладка «GraphPanel»
Визуализация 1D ПЧД в программе ICE
«ICE» – вкладка «SpectrumPanel»
Приемущества
Выбранное решение позволяет:
 использовать разнообразные возможности визуализации
данных, заложенных в Matplotlib;
 быстрое написание графических приложений для
визуализаций данных;
 создавать
новые
функционально-самостоятельные
компоненты графического интерфейса на основе «PyQt»;
 объединять созданных компонентов в единой программе;
 получить
кросс-платформенность
создаваемого
программного обеспечения;
 выбранные средства распространяются под бесплатными
лицензиями.
Недостатки
 Трудное отслеживание
программе,
вызваного
типизации;
ошибок в
отсутствия
создаваемой
статической
 Cкорость выполнение программы ниже, так как
Python–это скриптовый язык;
Выводы
 «PMP» позволяет создавать компоненты, которые
могут выполнять визуализацию данных используя
библиотеку «Matplotlib»;
 Предложен
общий
подход
к
создание
программного обеспечения используя «PMP»;
 Созданные компоненты и программы с помощью
«PMP» усовершенствовали «Sonix+»;
Download