Взаимодействие с платформой REPEAT VISION#

Модуль взаимодействия с REPEAT VISION

class repeat.repeat_model.Application(user: pydantic.dataclasses.dataclass, address: str = 'https://app.repeat.vision', common_path: str = '/backend/api/v1/public')#

Класс настройки соединения с моделью REPEAT VISION

Parameters:
userrepeat.repeat_user.User

Экземпляр класса User с описанием параметров пользователя, необходимых для авторизации и последующего использования модуля repeat

addressstr, optional

Адрес сайта платформы REPEAT VISION. Значение по умолчанию 'https://app.repeat.vision'. Аргументу address может присваиваться другой адрес платформы в случае использования дистрибутива REPEAT VISION.

Изменено в версии 1.3.0: Значение по умолчанию аргумента address изменено на 'https://app.repeat.vision'

common_pathstr

Общая часть пути к методам REST API REPEAT VISION. Значение по умолчанию '/backend/api/v1/public'. Аргументу common_path может присваиваться другой путь к методам платформы в случае использования дистрибутива REPEAT VISION, например, common_path = '/api/v1/public'.

Устарело, начиная с версии 2.0.0: Аргумент common_path будет заменён на is_cloud : bool со значением по умолчанию True для доступа к методам REST API облачной версии REPEAT VISION. В случае использования дистрибутива аргументу is_cloud необходимо будет присвоить значение False.

Attributes:
projectsdict

Набор проектов пользователя. Ключ : str | int в projects - уникальный идентификатор проекта. Значение : dict в projects - описание проекта.

Изменено в версии 2.0.0: Изменится тип на pandas.Series. В аттрибуте projects ключом str станет идентификатор проекта, а значением str будет имя проекта. Дополнительную информацию о проектах можно получить с помощью метода get_projects()

Returns:
None

Examples

>>> from repeat import User, Application
>>>  
>>> user = User(token = "уникальный токен из кабинета пользователя REPEAT VISION")
>>> app = Application(user)
>>> print(app.projects)
>>> # {"21425d1a-70f9-4bke-8140-81bd312bd91b": {
>>> #   "userId": "11125d1a-70f9-5bke-5145-81bd312ad91a",
>>> #   "projectId": "21425d1a-70f9-4bke-8140-81bd312bd91b",
>>> #   "role": "owner",
>>> #   "createdAt": "2024-03-20T09:32:03.565075+03:00",
>>> #   "updatedAt": "2024-03-20T09:32:03.565075+03:00",
>>> #   "projectName": "[DEMO] EV",  

Пример использования REPEAT VISION в дистрибутиве, установленного по локальному адресу "https://my.repeat.vision.local", в котором публичный REST API расположен по пути "/api/v1/public"

>>> from repeat import User, Application
>>> 
>>> user = User( token = "уникальный токен из кабинета пользователя дистрибутива REPEAT VISION")
>>> app = Application(
>>>     user, 
>>>     address = "https://my.repeat.vision.local",
>>>     common_path = "/api/v1/public"
>>>     )
get_exploration_model(project: str | int, time_interval: pydantic.dataclasses.dataclass = None, solver_retry_delay: float = 0.25, max_retries_number: int = 0) → ExplorationModel#

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

Parameters:
projectstr | int

Уникальный идентификатор проекта с моделью REPEAT VISION.

Подсказка

Номер проекта доступен в приложении REPEAT VISION на странице управления проектами https://app.repeat.vision/projects Также номер проекта доступен после открытия (для редактирования или запуска) в настройках проекта в поле id.

time_intervalrepeat.data_structures.TimeInterval

Класс для описания интервала времени. Значение по умолчанию None.

solver_retry_delayfloat | int

Длительность секунд для одной задержки расчёта. Значение по умолчанию \(0.25 [cек]\). Данный параметр, а также аргумент max_retries_number необходимы на следующие случаи:

  • Количество пользователей, которые выполняют запуск моделей на расчёт превышает доступное количество расчётных модулей. Тогда в расчётных циклах допускается время на ожидание свободного расчётного модуля;

  • Выполнение параметрических исследований, решения задач оптимизации или выполнение расчётных циклов в дистрибутиве платформы REPEAT VISION в локальной сети предприятия с ограниченным количеством доступных. расчётных модулей. Тогда возможен случай начала расчётного цикла при отсутствии хотя бы одного доступного расчётного модуля.

Добавлено в версии 1.1.0.

max_retries_numberint

Количество попыток задержки расчёта. Если значение больше нуля, то выполняется проверка наличия свободного расчётного модуля. Значение по умолчанию 0.

Добавлено в версии 1.1.0.

Returns:
modelExplorationModel

Экземпляр класса ExplorationModel для дальнейшего взаимодействия с моделью REPEAT VISION.

Examples

>>> from repeat import User, Application, TimeInterval
>>>  
>>> user = User(token = "уникальный токен из кабинета пользователя REPEAT VISION")
>>> app = Application(user)
>>> t_interval = TimeInterval(start = 1, end = 2500)
>>> project = "21425d1a-70f9-4bke-8140-81bd312bd91b"
>>> model = app.get_exploration_model(project, t_interval)
>>> print(model)
>>> # ExplorationModel(project = '21425d1a-70f9-4bke-8140-81bd312bd91b', 
>>> #                  name = 'Подготовка модели для автоматизации', 
>>> #                  time_interval = TimeInterval(start = 0, end = 1000))
get_model(time_interval: pydantic.dataclasses.dataclass) → Model#

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

Устарело, начиная с версии 2.0.0: Необходимо использовать метод get_exploration_model() для инициализации класса ExplorationModel с целью дальнейшего взаимодействия с моделью REPEAT VISION.

Parameters:
time_intervalrepeat.data_structures.TimeInterval

Класс для описания интервала времени.

Returns:
Model

Экземпляр класса Model для дальнейшего получения результатов расчёта из модели REPEAT VISION.

Notes

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

Examples

>>> from repeat import User, Application, TimeInterval
>>>  
>>> user = User(token = 'уникальный токен из кабинета пользователя REPEAT VISION')
>>> app = Application(user)
>>> t_interval = TimeInterval(start = 1, end = 2500)
>>> model = app.get_model(t_interval)
get_projects(to_pandas=False, verbose=True)#

Метод возвращает информацию о проектах пользователя

Добавлено в версии 1.2.0.

Parameters:
to_pandasbool

Флаг выбора структуры данных, в которой необходимо вернуть список проектов. Значение по умолчанию False, при котором возвращается словарь.

verbose: bool

Флаг выбора количества свойств, помещаемых в структуру данных. Значение по умолчанию True, при котором сохраняются все свойства каждого проекта. В случае False о каждом проекте сохраняется только имя и идентификатор проекта.

Returns:
dict[str | int, dict] | pd.Series | pd.DataFrame

Информация о проектах. Ключ - идентификатор проекта, значение - свойства о проекте REPEAT VISION

Examples

>>> import repeat as rp
>>> 
>>> user = rp.User(token = "уникальный ключ из кабинета пользователя REPEAT VISION")
>>> app = rp.Application(user)
>>> projects = app.get_projects(to_pandas = False, verbose = True)
>>> print(projects)
>>> # {"21425d1a-70f9-4bke-8140-81bd312bd91b": {
>>> #   "userId": "11125d1a-70f9-5bke-5145-81bd312ad91a",
>>> #   "projectId": "21425d1a-70f9-4bke-8140-81bd312bd91b",
>>> #   "role": "owner",
>>> #   "createdAt": "2024-03-20T09:32:03.565075+03:00",
>>> #   "updatedAt": "2024-03-20T09:32:03.565075+03:00",
>>> #   "projectName": "[DEMO] EV",    
>>> project_names = app.get_projects(to_pandas = True, verbose = False)
>>> print(project_names.head(2))
>>> # 21425d1a-70f9-4bke-8140-81bd312bd91b                        [DEMO] EV
>>> # bb18efd5-52b7-4d78-bk12-734653g77b45   DEMO] ТАД подъемного механизма
class repeat.repeat_model.ExplorationModel(project: str | int, name: str, time_interval: pydantic.dataclasses.dataclass, endpoints: _ApplicationEndpoints, solver_retry_delay: float = 0.25, max_retries_number: int = 0)#

Класс для взаимодействия с моделью REPEAT VISION.

Класс обеспечивает:

  • Передачу исходных данных в модель через глобальные переменные модели REPEAT VISION

  • Запуск модели на расчёт

  • Получение результатов расчётов из блоков Выходной порт библиотеки Внешние модели

  • Получение необходимой информации о модели и о процессе расчёта

Parameters:
projectstr | int

Идентификатор проекта. Номер проекта доступен в модуле repeat через атрибут projects в экземпляре класса Application.

Подсказка

Номер проекта доступен в приложении REPEAT VISION на странице управления проектами https://app.repeat.vision/projects Также номер проекта доступен после открытия (для редактирования или запуска) в настройках проекта в поле id.

namestr

Имя проекта с моделью REPEAT VISION

time_intervalrepeat.data_structures.TimeInterval

Экземпляр класса для описания интервала времени. Значение по умолчанию None.

endpoints_ApplicationEndpoints

Экземпляр класса с атрибутами WEB API REPEAT VISION

solver_retry_delayfloat | int

Длительность секунд для одной задержки расчёта. Значение по умолчанию \(0.25 [cек]\). Данный параметр, а также аргумент max_retries_number необходимы на следующие случаи:

  • Количество пользователей, которые выполняют запуск моделей на расчёт превышает доступное количество расчётных модулей. Тогда в расчётных циклах допускается время на ожидание свободного расчётного модуля;

  • Выполнение параметрических исследований, решения задач оптимизации или выполнение расчётных циклов в дистрибутиве платформы REPEAT VISION в локальной сети предприятия с ограниченным количеством доступных расчётных модулей. Тогда возможен случай начала расчётного цикла при отсутствии хотя бы одного доступного расчётного модуля.

Добавлено в версии 1.1.0.

max_retries_numberint

Количество попыток задержки расчёта. Если значение больше нуля, то выполняется проверка наличия свободного расчётного модуля перед выполнением расчёта методом .run(). Значение по умолчанию 0.

Добавлено в версии 1.1.0.

Attributes:
custom_named_result_idsdict

Словарь с параметрами результатов, содержащих пользовательские названия, блоков Выходной порт из библиотеки Внешние модели. Словарь доступен после запуска расчёта модели методом .run()

parametersdict

Словарь с параметрами модели. Ключ : str словаря parameters - идентификаторы блоков модели REPEAT VISION. Значение : dict словаря parameters - набор параметров блока. Словарь parameters доступен после запуска расчёта модели методом .run()

Returns:
None

Notes

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

Examples

>>> import pandas as pd
>>> from repeat import User, Application, TimeInterval
>>>  
>>> user = User(token = 'уникальный токен из кабинета пользователя REPEAT VISION')
>>> app = Application(user)
>>> t_interval = TimeInterval(start = 1, end = 2500)
>>> project = "21425d1a-70f9-4bke-8140-81bd312bd91b"
>>> model = app.get_exploration_model(project, t_interval)  
>>> variables = pd.Series({'pressure' : 85000}, dtype = float)
>>> with model as md:
>>>     md.run(variables)
>>>     results = md.get_results('flowrate')
property existing_variables: pandas.Series#

Атрибут значений глобальных переменных модели REPEAT VISION

Returns:
pandas.Series

Имена глобальных переменных модели REPEAT VISION, а также текущие значения переменных с типом float. Имена переменных записываются в атрибут index

Raises:
REPEATHTTPError

Ошибка, возникающая в случае невозможности получения значений переменных.

REPEATVariableNotExistError

Ошибка в случае отсутствия в модели глобальных переменных.

Examples

>>> from repeat import User, Application, TimeInterval
>>>  
>>> user = User(token = 'уникальный токен из кабинета пользователя REPEAT VISION')
>>> app = Application(user)
>>> t_interval = TimeInterval(start = 1, end = 2500)
>>> project = 1247
>>> model = app.get_exploration_model(project, t_interval)  
>>> print(model.existing_variables)
>>> # pressure    70000.0
>>> # dtype: float64
get_all_parameters() → dict#

Функция возвращает всю доступную информацию о параметрах блоков модели REPEAT VISION

Returns:
parametersdict

Словарь с параметрами модели. Ключ : str словаря parameters - идентификаторы блоков модели REPEAT VISION. Значение : dict словаря parameters - набор параметров блока.

Notes

Метод работает после запуска расчёта модели методом run().

get_results(name: str, time_interval: pydantic.dataclasses.dataclass = None) → pandas.Series#

Метод получения результатов расчёта

Parameters:
namestr

Имя параметра, для которого требуются результаты расчёта.

Совет

В модели REPEAT VISION рекомендуется использовать блоки Выходной порт библиотеки Внешние модели с целью получения результатов расчёта по именам параметров. В блоке Выходной порт в поле Пользовательское название требуется указать имя параметра. Также допускается использовать для имён параметров id параметров из свойств блоков модели REPEAT VISION.

time_intervalrepeat.data_structures.TimeInterval

Экземпляр класса для описания интервала времени. Значение по умолчанию None на случай если time_interval создан в при инициализации экземпляра класса ExplorationModel и если для всех параметров результатов достаточно общей настройки интервала времени. Используйте новый экземпляр класса TimeInterval в качестве аргумента time_interval к методу get_results() в случае, если для каждого параметра результата нужен собственный интервал времени.

Важно

Если аргумент time_interval отличен от None в методе get_results(), то при создании временного ряда результата расчёта time_interval используется в приоритетном порядке вместо аттрибута экземпляра класса ExplorationModel (Обратите внимание на примеры ниже).

Добавлено в версии 0.9.0.

Returns:
resultspandas.Series

Результаты расчёта в виде временного ряда для заранее настроенного time_interval. Атрибут name в pandas.Series будет обладать значением в соответствии с именем параметра, указанного в качестве аргумента метода get_results(name : str)

Notes

Результаты расчёта доступны сразу после успешного выполнения первых итераций расчёта в процессе моделирования после запуска модели методом run(). Метод release_model() очищает результаты расчёта и завершает работу расчётного модуля.

Examples

>>> import pandas as pd
>>> from repeat import User, Application, TimeInterval
>>>  
>>> user = User(token = 'уникальный токен из кабинета пользователя REPEAT VISION')
>>> app = Application(user)
>>> model = app.get_exploration_model(
>>>     project = "21425d1a-70f9-4bke-8140-81bd312bd91b"
>>>     )
>>> variables = pd.Series({'pressure' : 85000}, dtype = float)
>>> with model as md:
>>>     md.run(variables, 
>>>            real_time_sync = False, # Синхронизация выключена
>>>            modeling_time = 2.5, # Секунды
>>>            integration_step = 100, # Миллисекунды
>>>            discretization_step = 100, # Миллисекунды
>>>            )
>>>     flow = md.get_results('flowrate',
>>>                           TimeInterval(start = 1, end = 2500)
>>>                            )
>>>     temp = md.get_results('temprature',
>>>                           TimeInterval(start = 2450, end = 2500)
>>>                            )
>>> 
>>> pipe_model = app.get_exploration_model(
>>>     project = "21425d1a-70f9-4bke-8140-81bd312bd91b", 
>>>     # Общий интервал времени
>>>     time_interval = TimeInterval(start = 1, end = 1000) 
>>>     )
>>> pipe_vars = pd.Series({'inner_diameter' : 0.2})
>>> with pipe_model as md:
>>>     md.run(pipe_vars)
>>>     # Расчётные значения расхода и давления необходимы для одинакового
>>>     # интервала всего времени моделирования
>>>     flow = md.get_results('flowrate')  
>>>     press = md.get_results('pressure')
>>>     # Температура нужна только для интервала времени при завершении 
>>>     # моделирования
>>>     temp = md.get_results('temprature',
>>>                           TimeInterval(start = 950, end = 1000)
>>>                           )
property log#

Атрибут журнала с описанием процесса расчёта модели

Returns:
dict

Словарь с журналом.

Raises:
REPEATHTTPError

В случае невозможности получения журнала.

release_model()#

Метод завершения работы с моделью. Останавливается расчёт, очищаются результаты расчёта и завершается работа расчётного модуля.

Returns:
None.

Notes

Метод .release_model() используется при работе с классом ExplorationModel при помощи контекстного менеджера with. При этом подходе обеспечивается:

  • Безопасное завершение процесса расчёта модели REPEAT VISION

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

run(variables: pandas.Series, real_time_sync: bool = False, modeling_time: int = None, integration_step: int = None, discretization_step: int = None)#

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

Parameters:
variablespd.Series

Значения глобальных переменных модели REPEAT VISION. Переменные формируются в структуре данных pandas.Series, в которой index должны содержать названия глобальных переменных с типом str, тип данных у значений переменных должен быть dtype = float. Например, variables = pd.Series(data = [25], index = ['Temperature'],dtype = float)

real_time_syncbool

Синхронизация с реальным временем. По умолчанию синхронизация выключена, значение False. При выключенной синхронизации вычисление будет производиться с максимально возможной скоростью и обычно опережает реальное время. При включенной синхронизации один шаг модельного времени будет ориентировочно соответствовать одному шагу реального времени. При большом объёме вычислений модельное время может отставать от реального.

Добавлено в версии 0.9.0.

modeling_timeint

Значение времени моделирования (секунды), после которого расчёт будет остановлен. По умолчанию значение None, используется настройка модели, заданная через графическое приложение REPEAT VISION.

Добавлено в версии 0.9.0.

integration_stepint

Значение шага интегрирования (миллисекунды) между соседними рассчитываемыми состояниями модели. По умолчанию значение None, используется настройка модели, заданная через графическое приложение REPEAT VISION.

Добавлено в версии 0.9.0.

discretization_stepint

Значение шага времени (миллисекунды) между ближайшими занесениями результатов расчёта в базу данных. По умолчанию значение None, используется настройка модели, заданная через графическое приложение REPEAT VISION.

Добавлено в версии 0.9.0.

Returns:
None.

Notes

Если необходимо использовать настройки времени моделирования, шага интегрирования или шага времени между ближайшими занесениями результатов расчёта в базу данных, тогда в метод .run() требуется передавать значения трём обязательным аргументам: modeling_time, integration_step и discretization_step. В ином случае значения аргументов modeling_time, integration_step и discretization_step используются из ранее сохранённой модели REPEAT VISION (смотрите пример).

Examples

>>> import pandas as pd
>>> from repeat import User, Application, TimeInterval
>>>  
>>> user = User(token = 'уникальный токен из кабинета пользователя REPEAT VISION')
>>> app = Application(user)
>>> t_interval = TimeInterval(start = 1, end = 2500)
>>> project = "21425d1a-70f9-4bke-8140-81bd312bd91b"
>>> model = app.get_exploration_model(project, t_interval)  
>>> variables = pd.Series({'pressure' : 85000}, dtype = float)
>>> with model as md:
>>>     md.run(variables, 
>>>            real_time_sync = False, # Синхронизация выключена
>>>            modeling_time = 2.5, # Секунды
>>>            integration_step = 100, # Миллисекунды
>>>            discretization_step = 100, # Миллисекунды
>>>            )
>>>     results = md.get_results('flowrate')
>>> 
>>> # Настройки времени modeling_time и шагов integration_step и 
>>> # discretization_step используются из модели, ранее сохранённой в 
>>> # приложении REPEAT VISION
>>> with model as md:
>>>     md.run(variables) 
>>>     results = md.get_results('flowrate')
property status: SolvingStatus#

Атрибут состояния процесса расчёта модели

Returns:
model_statusSolvingStatus

Код состояния модели, в соответствии с описанием класса SolvingStatus: модель в процессе расчёта или расчёт успешно завершён. После успешного завершения расчёта допускается получение результата расчёта.

Raises:
REPEATSolverNotRunError

В случае необходимости запуска или перезапуска расчёта.

REPEATSolverError

В случае неизвестного кода ошибки, а также при превышении лимитов на оперативную память или память постоянного хранения модели.

NotImplementedError

Нет реализации работы модуля repeat для модели, содержащей блоки PAUSE или STOP.

stop()#

Метод остановки расчёта с возможностью выгрузки результатов расчёта

Returns:
None.
class repeat.repeat_model.Model(user, solver: Solver, time_interval: pydantic.dataclasses.dataclass)#

Класс для взаимодействия с моделью REPEAT для получения результатов расчётов

Устарело, начиная с версии 2.0.0: Необходимо использовать класс ExplorationModel для взаимодействия с моделью REPEAT.

Parameters:
userUser

Экземпляр класса User

solverSolver

Экземпляр класса Solver

time_intervalTimeInterval

Экземпляр класса TimeInterval

Returns:
None

Notes

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

Examples

>>> user = User(token = 'уникальный токен из кабинета пользователя REPEAT')
>>> app = Application(user)
>>> t_interval = TimeInterval(start = 1, end = 2050) 
>>> model = app.get_model(t_interval)
>>> with model as md:
>>>     res1 = md.get_results('1687723033287_OUT_2')
>>>     res2 = md.get_results('1687722637724_OUT_3')
get_all_parameters()#

Функция возвращает всю доступную информацию о параметрах модели REPEAT

get_parameter(name: str) → pydantic.dataclasses.dataclass#

Метод возвращает параметр, существующий в модели REPEAT.

Parameters:
namestr

Имя параметра. Доступное имя параметров можно посмотреть в словаре parameters экземпляра класса Model

Returns:
Parameter

Экземпляр класса Parameter.

Raises:
REPEATParameterNotExistError

Ошибка, объявляемая, если параметр name отсутствует в наборе параметров модели REPEAT.

get_results(name: str)#

Метод возвращает результаты для запрашиваемого имени параметра модели

Parameters:
namestr

Имя параметра.

Returns:
resultspd.Seris

Временной ряд значений параметра в структуре pandas.Series. Индексы Series являются значениями расчётного времени между начальным и конечным значениями экземпляра класса TimeInterval

Raises:
REPEATParameterNotExistError

Ошибка, объявляемая, если параметр name отсутствует в наборе параметров модели REPEAT.

class repeat.repeat_model.SolvingStatus(value, names=None, *, module=None, qualname=None, type=None, start=1, boundary=None)#

Состояния расчётного процесса модели REPEAT VISION

Attributes:
IN_PROGRESSint

Расчёт в процессе. Значение 1

COMPLETEint

Расчёт успешно завершён по времени моделирования, установленного в проекте. Значение 21

STOP_BY_CONDITIONint

Расчёт успешно завершён по условию (приказ блока STOP и т.д.). Значение 0

STOP_BY_USERint

Расчёт остановлен пользователем из графического интерфейса. Значение 2

PAUSEDint

Расчёт остановлен блоком PAUSE. Значение 3

MODEL_NOT_FOUNDint

Не удалось запустить расчёт. Проект не найден расчётным модулем. Значение 20

EXCEEDED_RAM_LIMITint

Расчёт не завершён из-за ограничения оперативной памяти. Значение 51

EXCEEDED_STORAGE_LIMITint

Расчёт не завершён из-за ограничений памяти. Значение 52

ERRORint

Возникла ошибка в процессе расчёта. Значение 100