Взаимодействие с платформой 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:
- user
repeat.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.
- user
- 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_interval
repeat.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_interval
repeat.data_structures.TimeInterval Класс для описания интервала времени.
- time_interval
- 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_interval
repeat.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_interval
repeat.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