Применение Python в классической реализации CPython#

Для автоматизации работы с моделью REPEAT VISION из Python разработан пакет repeat.

Внимание

Для решения задач автоматизации с применением Python пользователь должен обладать навыками программирования в классической реализации CPython.

Также вам потребуются:

  • Знания по работе с виртуальными окружениями с использованием стандартного пакета venv

  • Навыки по загрузке и установке пакетов с применением стандартного пакета pip

  • Базовые навыки в обработке данных и работе с графиками с применением пакета pandas.

В этом уроке вы познакомитесь с возможностями автоматизации работы с моделью REPEAT VISION на примере проекта [DEMO] ТАД подъемного механизма.

После выполнения урока вы получите следующие навыки:

  1. Умение настраивать доступ к модели REPEAT VISION из Python программы через API ключи

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

  3. Навыки взаимодействия с моделью с через контекстный менеджер для получения необходимых результатов расчётов

1.  Начало использования#

В вашей рабочей области жёсткого диска требуется создать папку для работы с моделью REPEAT VISION, например, папку с именем repeat_postprocessing. В рабочей папке repeat_postprocessing создаётся виртуальное окружение для последующей установки пакета repeat с его зависимостями.

mkdir repeat_postprocessing
cd repeat_postprocessing
python -m venv .

После создания рабочей папки и виртуального окружения выполняется активация виртуального окружения. Для операционных систем на базе Linux выполняется команда bash, а для Windows выполняется команда PowerShell.

source ./bin/activate
Scripts\Activate.ps1

Теперь необходимо установить пакет repeat. Данная команда также установит необходимые зависимости.

python -m pip install repeat

В удобном для вас текстовом редакторе программного кода Python требуется создать файл, например, example.py, в рабочей папке repeat_postprocessing. В файле example.py создадим код для импорта пакета repeat и вызова его справочной информации.

# -*- coding: utf-8 -*-
import repeat as rp

help(rp)

Далее выполним данный файл в командной строке.

python example.py

В результате выполнения примера получим в командной строке следующий вывод.

Help on package repeat:

NAME
    repeat

DESCRIPTION
    repeat
    ------
    
    Модуль repeat предназначен для взаимодействия пользовательской Python программы 
    с расчётной моделью REPEAT VISION для решения следующих задач: 
       - выполнение исследований на результах расчётов модели REPEAT VISION
       - анализ данных и выполнение постобработки временных рядов REPEAT VISION.

Теперь можно реализовать процесс взаимодействия с моделью REPEAT VISION.

2.  Настройка API ключа пользователя#

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

В интерфейсе REPEAT VISION нажмите на кнопку настроек пользователя и в выпадающем окне выберете раздел API ключи.

go_to_api_key_settings

В разделе API ключи создайте API ключ с помощью кнопки Новый API ключ.

create_new_api_key

Новый API ключ добавьте в настройки пользователя класса User при создании его экземпляра в вашей программе в файле example.py.

# -*- coding: utf-8 -*-
import repeat as rp

user = rp.User(token = 'enter a unique API key from REPEAT user cabinet instead of this comment')

Далее требуется настроить класс Application для настройки соединения с REPEAT VISION.

app = rp.Application(user)

Теперь всё готово для взаимодействия с моделью REPEAT VISION!

3.  Запуск модели REPEAT VISION на расчёт#

В интерфейсе REPEAT VISION требуется открыть проект [DEMO] ТАД подъемного механизма и выполнить следующие шаги:

  1. Запустить расчёт кнопкой PLAY play до необходимого значение времени, например, до 2 секунд

  2. Расчёт установить на паузу кнопкой PAUSE pause

4.  Настройка временного интервала#

На следущем шаге создаётся экземпляр класса TimeInterval для настройки диапазона времени, в котором пользователю необходимо получить значения результатов расчёта параметров из модели REPEAT VISION:

  • Аргументу start передаётся начальное значение диапазона в миллисекундах \(start = 1 [ms]\),

  • Аргументу end передаётся конечное значение диапазона \(end = 2000 [ms]\). Напомним, что расчёт остановлен на паузе на значении времени 2 секунды.

t_interval = rp.TimeInterval(start = 1, end = 2000)

5.  Настройка взаимодействия с моделью#

С помощью метода get_model класса Application создаётся экземпляр класса Model для дальнейшего получения результатов расчёта из модели REPEAT VISION.

Для выполнения этого действия требуется методу get_model в качестве аргумента передать t_interval с настройками временного диапазона.

model = app.get_model(t_interval)

6.  Получение результатов расчётов модели#

Теперь из модели REPEAT VISION можно получить результаты расчёта необходимых параметров с помощью контекстного менеджера экземпляра класса Model, в котором методу get_results передаётся значение строки для интересующего имени параметра.

Метод get_results возвращает результаты расчёта в структуре данных pandas.Series популярного модуля pandas для анализа данных.

Внутри with блока можно получить необходимый набор результатов параметров.

Подсказка

Значение строк имён параметров модели доступны для копирования в графическом интерфейсе REPEAT VISION в областях настройки блоков

Получим результаты для двух параметров с именами '1687723033287_OUT_2' и '1687722637724_OUT_3'

with model as md:
  res1 = md.get_results('1687723033287_OUT_2')
  res2 = md.get_results('1687722637724_OUT_3')

7.  Работа с результатами расчёта#

Первым шагом в анализе данных является рассмотрение численных значений параметров, а также их взаимосвязей, например, на графиках. Для этого воспользуемся встроенными методами pandas для анализа результатов параметра '1687723033287_OUT_2', находящегося в объекте res1.

res1.head() # Numerical values output of the parameter calculation results
res1.plot(  # Displaying dependencies on a diagram
   ylabel = f'Parameter {res1.name}', # Adding a signature with the parameter name to Y axis
   xlabel = 'Time $[ms]$' # Adding a signature with the time name to X-axis
   ) 

Данные вызовы методов выведут следующее:

1.0    0.000000e+00
2.0    5.058322e-08
3.0    6.064362e-07
4.0    3.427226e-06
5.0    1.293609e-05
Name: 1687723033287_OUT_2, dtype: float64

play

8.  Итоги#

Весь код программы

# -*- coding: utf-8 -*-
import repeat as rp

user = rp.User(
   token = 'enter a unique API key from REPEAT user cabinet instead of this comment'
   )
app = rp.Application(user)
t_interval = rp.TimeInterval(
   start = 1, # initial value of time range in [ms]
   end = 2000 # end value of time range in [ms]
   )
model = app.get_model(t_interval)
with model as md:
  res1 = md.get_results('1687723033287_OUT_2')
  res2 = md.get_results('1687722637724_OUT_3')

res1.head() # Numerical values output of the parameter calculation results
res1.plot(  # Displaying dependencies on a diagram
   ylabel = f'Parameter {res1.name}', # Adding a signature with the parameter name to Y axis
   xlabel = 'Time $[ms]$' # Adding a signature with the time name to X-axis
   ) 

В данном уроке вам удалось освоить следующие навыки:

  1. Умение настраивать доступ к модели REPEAT VISION с помощью классов User и Application

  2. Знания в настройке временных интервалов через класс TimeInterval с учётом его особенности настройки времени в микросекундах

  3. Особенности получения имён параметров из интерфейса REPEAT VISION

  4. Навыки взаимодействия с моделью с через контекстный менеджер экземпляра класса Model для получения необходимых результатов расчётов с помощью метода get_results