Тази статия е посветена на Python Gateway — общностен проект с отворен код за платформата за данни InterSystems IRIS. Този проект позволява оркестрация на всякакви алгоритми за машинно обучение, разработени на езика Python (основната среда за много Data Scientists), и използване на множество готови библиотеки за бързо създаване на адаптивни, роботизирани аналитични AI/ML решения на платформата InterSystems IRIS. В тази статия ще покажа как InterSystems IRIS може да оркестрира процеси на езика Python, ефективно да извършва двустранна трансфер на данни и да създава интелигентни бизнес процеси.
План
- Въведение.
- Инструменти.
- Инсталация.
- API.
- Интероперабилност.
- Jupyter Notebook.
- Изводи.
- Връзки.
- MLToolkit.
Въведение
Python е високоефективен език за програмиране с общо предназначение, насочен към повишаване на продуктивността на разработчика и четивността на кода. В тази серия статии ще разкажа за възможностите за приложение на езика Python на платформата InterSystems IRIS, като основният фокус на тази статия е използването на Python като език за създаване и приложение на модели за машинно обучение.
Машинното обучение (ML) е клас методи на изкуствения интелект, при които характерната черта е не директното решаване на проблема, а обучението в процеса на решаване на множество сходни задачи.
Алгоритмите и моделите на машинно обучение стават все по-разпространени. Причините за това са множество, но всичко се свежда до достъпността, простотата и постигането на практическите резултати. Дали клъстерирането или дори невронното моделиране е нова технология?
Разбира се, че не, но в момента няма необходимост от писане на стотици хиляди редове код, за да се стартира един модел, а разходите за създаване и прилагане на модели стават все по-малки.
Инструментите се развиват — докато нямаме напълно GUI ориентирани AI/ML инструменти, напредъкът, който наблюдавахме с много други класове информационни системи, като BI (от писане на код до използване на фреймворци и GUI ориентирани конфигурируеми решения), се наблюдава и в инструментите за създаване на AI/ML. Вече преминахме етапа на писане на код и днес използваме фреймворци за изграждане и обучение на модели.
Други подобрения, като възможността за разпространение на предварително обучен модел, когато крайният потребител просто трябва да завърши обучението на модела с неговите специфични данни, също улесняват започването на прилагането на машинно обучение. Тези постижения значително облекчават изучаването на машинното обучение както за специалистите, така и за компаниите като цяло.
От друга страна, събираме все повече данни. Благодарение на единна платформа за данни, като InterSystems IRIS, цялата тази информация може да бъде незабавно подготвена и използвана като изходни данни за моделите на машинно обучение.
С преминаването към облака стартирането на AI/ML проекти става по-лесно от всякога. Можем да консумираме само ресурсите, от които се нуждаем. Освен това, благодарение на паралелизацията, предлагана от облачните платформи, можем да спестим време.
Но какво да кажем за резултатите? Тук всичко става по-сложно. Съществуват множество инструменти за изграждане на модели, за които ще говоря по-късно. Да изградим добър модел не е лесно, но какво следва? Получаването на печалба от използването на модела от бизнеса също е не тривиална задача. Коренът на проблема е в разделението на аналитичните и транзакционните натоварвания и моделите на данни. Когато обучаваме модела, обикновено го правим с исторически данни. Но мястото на построения модел е в транзакционната обработка на данни. Каква полза има от най-добрия модел за откриване на измамни транзакции, ако го стартираме веднъж на ден? Измамниците отдавна са си напуснали с парите. Трябва да обучаваме модела на исторически данни, но също така трябва да го прилагаме в реално време на новите постъпващи данни, за да могат нашите бизнес процеси да действат в съответствие с прогнозите, направени от модела.
ML Toolkit е набор от инструменти, чиято цел е именно това: да обедини модели и транзакционна среда, така че построените модели да могат лесно да бъдат използвани директно в бизнес процесите ви. Python Gateway е част от ML Toolkit и осигурява интеграция с езика Python (по аналогия с R Gateway, който, будейки част от ML Toolkit, осигурява интеграция с езика R).
Инструменти
Преди да продължим, бих искал да опиша няколко инструмента и библиотеки за Python, които ще използваме по-късно.
Технологии
- Python е интерпретиран, високопрофилен език за програмиране с общо предназначение. Основното предимство на езика е голямата библиотека от математически, ML и AI библиотеки. Както и ObjectScript, той е обектно-ориентиран език, но всичко е определено динамично, а не статично. Също така, всичко е обект. По-късните статии предлагат мимолетно запознаване с езика. Ако искате да започнете обучение, препоръчвам да започнете с .
- За нашите следващи упражнения инсталирайте .
- IDE: Аз използвам , но всъщност те са . Ако използвате Atelier, съществува Eclipse плъгин за разработчици на Python. Ако използвате VS Code, съществува разширение за Python.
- Notebook: вместо IDE можете да пишете и споделяте вашите скриптове в онлайн тетрадки. Най-популярната от тях е .
Библиотеки
Ето (непълен) списък на библиотеки за машинно обучение:
- — основен пакет за прецизни изчисления.
- — високопроизводителни структури от данни и инструменти за анализ на данни.
- — създаване на графики.
- — визуализация на данни, базирана на matplotlib.
- — методи за машинно обучение.
- — алгоритми за машинно обучение в контекста на методологията на градиентно избутване (Gradient Boosting).
- — NLP.
- — невронни мрежи.
- — платформа за създаване на модели за машинно обучение.
- — платформа за създаване на модели за машинно обучение, насочена към Python.
- — PMML от различни модели.
AI/ML технологиите позволяват да направите бизнеса по-ефективен и адаптивен. Освен това, днес тези технологии стават по-лесни за разработване и внедряване. Започнете да изучавате AI/ML технологии и как те могат да помогнат на вашата организация да расте.
Инсталиране
Съществуват няколко начина за инсталиране и използване на Python Gateway:
- ОС
- Windows
- Linux
- Mac
- Docker
- Използвайте образ от DockerHub
- Създайте свой собствен образ
Независимо от начина на инсталиране, ще ви е нужен изходен код. Единственото място за сваляне на кода е . Тя съдържа тествани стабилни релийзи, просто вземете последния. В момента това е 0.8, но с времето ще има и нови. Не клонирайте/изтегляйте хранилището, свалете последния релийз.
ОС
Ако инсталирате Python Gateway в операционна система, първо (независимо от операционната система) трябва да инсталирате Python. За това:
- . Препоръчва се да инсталирате Python в директорията по подразбиране.
- Инсталирайте модула
dill:pip install dill. - Изтеглете кода ObjectScript (т.е.
do $system.OBJ.ImportDir("C:InterSystemsReposPythoniscpy", "*.cls", "c",,1)) в която и да е област с продукти. В случай, че искате съществуващата област да поддържа продукти, изпълнете:write ##class(%EnsembleMgr).EnableNamespace($Namespace, 1). - Поставете в папка
binна вашия инстанс InterSystems IRIS. Файлът на библиотеката трябва да бъде достъпен на пътя, върнат отwrite ##class(isc.py.Callout).GetLib().
Windows
- Уверете се, че променливата на средата
PYTHONHOMEуказва на Python 3.6.7. - Уверете се, че системната променлива на средата
PATHсъдържа променливатаPYTHONHOME(или директорията, на която тя указва).
Linux (Debian/Ubuntu)
- Проверете, че променливата на средата
PATHсъдържа/usr/libи/usr/lib/x86_64-linux-gnu. Използвайте файла/etc/environmentза настройка на променливите на средата. - В случай на грешки
undefined symbol: _Py_TrueStructнастройте опциятаPythonLib. Също така в има раздел Troubleshooting.
Mac
- В момента се поддържа само Python 3.6.7 от . Проверете променливата
PATH.
Ако сте променяли променливите на средата, рестартирайте вашия продукт InterSystems.
Docker
Използването на контейнери има редица предимства:
- Портативност
- Ефективност
- Изолация
- Лекота
- Иммутабилност
Запознайте се с тази за повече подробности относно използването на Docker с продуктите на InterSystems.
Всички версии на Python Gateway в момента са базирани на контейнери. 2019.4.
Готов образ
Изпълнете: docker run -d -p 52773:52773 --name irispy intersystemscommunity/irispy-community:latest, за да изтеглите и стартирате Python Gateway с InterSystems IRIS Community Edition. Това е всичко.
Създайте свой собствен образ
За изграждане на Docker образ, изпълнете в корена на репозитория: docker build --force-rm --tag intersystemscommunity/irispy:latest ..
По подразбиране образът се изгражда на базата на образа store/intersystems/iris-community:2019.4.0.383.0, но можете да промените това, задавайки променливата IMAGE.
За изграждане от InterSystems IRIS изпълнете: `docker build —build-arg IMAGE=store/intersystems/iris:2019.4.0.383.0 —force-rm —tag intersystemscommunity/irispy:latest`.
След това можете да стартирате Docker образа:
docker run -d
-p 52773:52773
-v //:/mount
--name irispy
intersystemscommunity/irispy:latest
--key /mount/iris.keyАко използвате образ, основан на InterSystems IRIS Community Edition, можете да не укажете ключ.
Коментари
- Процес на тестване
isc.py.test.Processсъхранява набор изображения в временен каталог. Може би ще искате да промените този път на монтиран каталог. За целта редактирайте настройкатаРаботнаДиректорияпосочвайки монтираната директория. - За достъп до терминала изпълнете:
docker exec -it irispy sh. - Достъп до Портала за Управление на Системата с логин
SuperUser/SYS. - За да спрете контейнера, изпълнете:
docker stop irispy && docker rm --force irispy.
Проверка на инсталацията
След като инсталирате Python Gateway, е добре да проверите дали той работи. Изпълнете този код в терминала на InterSystems IRIS:
set sc = ##class(isc.py.Callout).Setup()
set sc = ##class(isc.py.Main).SimpleString("x='HELLO'", "x", , .var).
write varВ резултат трябва да бъде изведено HELLO — стойността на Python променливата x. Ако върнатият статус sc е грешка или var празно, проверете .
API
Python Gateway е инсталиран и вие сте се уверили, че работи. Време е да започнете да го използвате!
Главният интерфейс към Python е isc.py.Main. Той предлага следните групи методи (всички връщат %Status):
- Изпълнение на кода
- Предаване на данни
- Помощни
Изпълнение на кода
Тези методи позволяват да се изпълнява произволен Python код.
SimpleString
SimpleString — това е основният метод. Той приема 4 опционални аргумента:
code— низ на кода за изпълнение. Символ за нов ред:$c(10).returnVariable— името на променливата за връщане.serialization— как да се сериализираreturnVariable. 0 — string (по подразбиране), 1 — repr.резултат— ByRef референция на променлива, в която се записва стойносттаreturnVariable.
По-горе изпълнихме:
set sc = ##class(isc.py.Main).SimpleString("x='HELLO'", "x", , .var).В този пример присвояваме на Python променливата x стойността Hello и искаме да върнем стойността на Python променливата x в ObjectScript променлива var.
ExecuteCode
ExecuteCode е по-сигурна и по-малко ограничена алтернатива SimpleString.
Низовете в платформата InterSystems IRIS са ограничени до 3 641 144 знака и ако искате да изпълните по-дълъг фрагмент код, трябва да използвате потоци.
Приемат се два аргумента:
code— низ или поток Python код за изпълнение.variable— (по желание) присвоява резултата от изпълнениетоcodeна тази Python променлива.
Пример за използване:
set sc = ##class(isc.py.Main).ExecuteCode("2*3", "y").В този пример умножаваме 2 по 3 и записваме резултата в Python променлива y.
Предаване на данни
Предавайте данни в Python и обратно.
Python -> InterSystems IRIS
Има 4 начина да получите стойността на Python променлива в InterSystems IRIS, в зависимост от сериализацията, която ви е нужна:
Стрингза прости типове данни и отстраняване на проблеми.Reprза съхранение на прости обекти и отстраняване на грешки.JSONза лесно манипулиране на данни в InterSystems IRIS.Pickleза запазване на обекти.
Тези методи позволяват получаване на променливи от Python под формата на низове или потоци.
GetVariable(variable, serialization, .stream, useString)— получаване наserializationпроменливатаvariableвstream. АкоuseStringравно на 1 и сериализацията се поставя в низ, тогава се връща низ, а не поток.GetVariableJson(variable, .stream, useString)— получаване на JSON сериализация на променливата.GetVariablePickle(variable, .stream, useString, useDill)— получаване на Pickle (или Dill) сериализация на променливата.
Нека опитаме да получим нашата променлива y.
set sc = ##class(isc.py.Main).GetVariable("y", , .val, 1)
write val
>6InterSystems IRIS -> Python
Зареждаме данни от InterSystems IRIS в Python.
ExecuteQuery(query, variable, type, namespace)— създава набор от данни (pandasdataframeилисписък) от sql запитване и го установява в Python променливаvariable. Пакетътisc.pyтрябва да е достъпен в областтаnamespace— там ще се изпълнява запитването.ExecuteGlobal(global, variable, type, start, end, mask, labels, namespace)— зарежда данни от глобалglobalот подскриптстартиранедоendв Python като променлива от типтип:списък, или pandasdataframe. Описание на опционалните аргументимаскирайandlabelsе налично в документацията на класа и репозиторийните .ExecuteClass(class, variable, type, start, end, properties, namespace)— зарежда данни от класкласот idстартиранедоendв Python като променлива от типтип:списък, или pandasdataframe.properties— списък (разделител — запетая) от свойства на класа, които трябва да бъдат заредени в набора от данни. Поддържат се маски*и?. По подразбиране —*(всички свойства). Свойство%%CLASSNAMEсе игнорира.ExecuteTable(table, variable, type, start, end, properties, namespace)— зарежда данни от таблицаtableот idстартиранедоendв Python.
ExecuteQuery — универсален (всяко коректно SQL-запитване ще бъде предадено на Python). Въпреки това, ExecuteGlobal и неговите обвивки ExecuteClass и ExecuteTable работят с редица ограничения. Те са много по-бързи (3-5 пъти по-бързи от ODBC драйвера и 20 пъти по-бързи ExecuteQuery). Допълнителна информация в .
Всички тези методи поддържат предаване на данни от всяка област. Пакетът isc.py трябва да е достъпен в целевата област.
ExecuteQuery
ExecuteQuery(request, variable, type, namespace) — предаване на резултатите от всяко коректно SQL-запитване на Python. Това е най-бавният метод за предаване на данни. Използвайте го, ако ExecuteGlobal и неговите обвивки не са налични.
Аргументи:
query— sql запитване.variable— името на Python променливата, в която се записват данните.тип—списъкили Pandasdataframe.namespace— областта, в която ще се изпълнява запитването.
ExecuteGlobal
ExecuteGlobal(global, variable, type, start, end, mask, labels, namespace) — предаване на глобал в Python.
Аргументи:
global— името на глобал без^variable— името на Python променливата, в която се записват данните.тип—списъкили Pandasdataframe.стартиране— първия подскрипт на глобала. Обязательно%Integer.end— последния подскрипт на глобала. Обязательно%Integer.маскирай— маска на стойности на глобалната променлива. Маската може да бъде по-кратка от броя на полетата в глобалната променлива (в този случай полетата в края ще бъдат пропуснати). Как да форматирате маската:+передайте стойността така, както е.-пропуснете стойността.b— Логически тип (0—False, всичко останало —True).d— Дата (от $horolog, на Windows от 1970, на Linux от 1900).t— Време ($horolog, секунди след полунощ).m— Времеви печат (стринг формата ГОДИНА-МЕСЕЦ-ДЕН ЧАС:МИНУТА:СЕКУНДА).
labels— %Списък с наименования на колони. Първият елемент — наименованието на сабскрипта.namespace— областта, в която ще се изпълнява запитването.
ExecuteClass
Обвивка над ExecuteGlobal. На базата на определението на класа подготвя повикване ExecuteGlobal и го извиква.
ExecuteClass(class, variable, type, start, end, properties, namespace) — предаване на данни от клас в Python.
Аргументи:
клас— име на класаvariable— името на Python променливата, в която се записват данните.тип—списъкили Pandasdataframe.стартиране— стартов Id.end— краен Idproperties— списък (разделител — запетая) от свойства на класа, които трябва да бъдат заредени в набора от данни. Поддържат се маски*и?. По подразбиране —*(всички свойства). Свойство%%CLASSNAMEсе игнорира.namespace— областта, в която ще се изпълнява запитването.
Всички свойства се предават така, както са, освен свойствата на типовете te, %Време, %Логически и %Времеви печат — те се конвертират в съответните класове в Python.
ExecuteTable
Обвивка над ExecuteClass. Превежда името на таблицата в име на класа и го извиква ExecuteClass. Сигнатура:
ExecuteTable(table, variable, type, start, end, properties, namespace) — предаване на данни от таблицата в Python.
Аргументи:
table— име на таблицата.
Всички останали аргументи се предават така, както са вExecuteClass.
Забележки
ExecuteGlobal,ExecuteClassиExecuteTableработят с еднаква бързина.ExecuteGlobal20 пъти по-бързо отExecuteQueryна големи набори от данни (време за предаване над >0.01 секунди).ExecuteGlobal,ExecuteClassиExecuteTableработят на глобали с дадената структура:^global(key) = $lb(prop1, prop2, ..., propN)къдетоkey— цяло число.- За
ExecuteGlobal,ExecuteClassиExecuteTableподдържан диапазон от стойностиteсъответства на диапазонаmktimeи зависи от ОС (: 1970-01-01, 1900-01-01, ). Използвайте%Времеви печатза предаване на данни извън този диапазон или използвайте pandas dataframe, тъй като това ограничение е само за списъка. - За
ExecuteGlobal,ExecuteClassиExecuteTableвсички аргументи, освен източника на данни (глобалната променлива, клас или таблица) и променливата, са опционални.
Примери
Тестов клас съдържа метод, демонстриращ всички варианти за предаване на данни:
set global = "isc.py.test.PersonD"
set class = "isc.py.test.Person"
set table = "isc_py_test.Person"
set query = "SELECT * FROM isc_py_test.Person"
// Общи аргументи
set variable = "df"
set type = "dataframe"
set start = 1
set end = $g(^isc.py.test.PersonD, start)
// Метод 0: ExecuteGlobal без аргументи
set sc = ##class(isc.py.Main).ExecuteGlobal(global, variable _ 0, type)
// Метод 1: ExecuteGlobal с аргументи
// При предаване на глобала имената на полетата се задават ръчно
// globalKey - името на сабскрипта
set labels = $lb("globalKey", "Name", "DOB", "TS", "RandomTime", "AgeYears", "AgeDecimal", "AgeDouble", "Bool")
// mask съдържа с 1 елемент по-малко от labels, защото "globalKey" - името на сабскрипта
// Пропускаме %%CLASSNAME
set mask = "-+dmt+++b"
set sc = ##class(isc.py.Main).ExecuteGlobal(global, variable _ 1, type, start, end, mask, labels)
// Метод 2: ExecuteClass
set sc = ##class(isc.py.Main).ExecuteClass(class, variable _ 2, type, start, end)
// Метод 3: ExecuteTable
set sc = ##class(isc.py.Main).ExecuteTable(table, variable _ 3, type, start, end)
// Метод 4: ExecuteTable
set sc = ##class(isc.py.Main).ExecuteQuery(query, variable _ 4, type)Извикайте метода do ##class(isc.py.test.Person).Test() за да видите как работят всички методи за предаване на данни.
Помощни методи
GetVariableInfo(variable, serialization, .defined, .type, .length)— получавате информация за променливата: дали е дефинирана, клас и дължина на сериализация.GetVariableDefined(variable, .defined)— дали променливата е дефинирана.GetVariableType(variable, .type)— получавате класа на променливата.GetStatus()— получавате и изтривате последната изключение от страната на Python.GetModuleInfo(module, .imported, .alias)— получавате променлива на модула и статус на импортиране.GetFunctionInfo(function, .defined, .type, .docs, .signature, .arguments)— получавате информация за функцията.
Интероперативност
Научихте се да извиквате Python Gateway от терминала, сега ще започнем да го използваме в продукция. Основата на взаимодействието с Python в такъв режим е isc.py.ens.Operation. Той ни позволява:
- Да изпълняваме код на Python
- Да запазваме/възстановяваме контекста на Python
- Да зареждаме и получаваме данни от Python
По принцип, операцията на Pyhton е обвивка около isc.py.Main. Операцията isc.py.ens.Operation дава възможност за взаимодействие с процеса на Python от продукциите на InterSystems IRIS. Поддържат се пет заявки:
isc.py.msg.ExecutionRequestза изпълнение на кода на Python. Връщаisc.py.msg.ExecutionResponseс резултат от изпълнението и стойности на запитаните променливи.isc.py.msg.StreamExecutionRequestза изпълнение на кода на Python. Връщаisc.py.msg.StreamExecutionResponseс резултат от изпълнението и стойности на запитаните променливи. Аналогично,isc.py.msg.ExecutionRequest, но приема и връща потоци вместо стрингове.isc.py.msg.QueryRequestза предаване на резултата от изпълнението на SQL заявка. ВръщаEns.Response.isc.py.msg.GlobalRequest/isc.py.msg.ClassRequest/isc.py.msg.TableRequestза предаване на данни на глобално/класово/таблично ниво. ВръщаEns.Response.isc.py.msg.SaveRequestза запазване на контекста на Python. ВръщаEns.StringResponseс идентификатор на контекста.isc.py.msg.RestoreRequestза възстановяване на контекста на Python.Освен това,
isc.py.ens.Operationима две настройки:Initializer— избор на клас, реализиращ интерфейсаisc.py.init.Abstract. Той може да се използва за зареждане на функции, модули, класове и т.н. Изпълнява се веднъж при стартиране на процеса.PythonLib— (само за Linux) ако виждате грешки при зареждане, задайте стойността му равна наlibpython3.6m.soили дори до пълния път до библиотеката на Python.
Създаване на бизнес процеси
Налични са два класа, които улесняват разработката на бизнес процеси:
isc.py.ens.ProcessUtilsпозволява извличане на анотации от активности с подмяна на променливи.isc.py.util.BPEmulatorпозволява лесно тестване на бизнес процеси с Python. Той може да изпълнява бизнес процес (части на Python) в текущия процес.
Замяна на променливи
Всички бизнес процеси, наследени от isc.py.ens.ProcessUtils, могат да използват метода GetAnnotation(name) за получаване на стойността на анотацията на активността по нейното име. Анотацията на активността може да съдържа променливи, които ще бъдат изчислени на страна на InterSystems IRIS преди да бъдат предадени на Python. Ето синтаксиса за подмяна на променливи:
${class:method:arg1:...:argN}— извикване на метода#{expr}— изпълнение на кода на ObjectScript.
Примерът е наличен в тестовия бизнес процес isc.py.test.Process, например в активността Correlation Matrix: Graph: f.savefig(r'#{process.WorkDirectory}SHOWCASE${%PopulateUtils:Integer:1:100}.png'). В този пример:
#{process.WorkDirectory}върща свойството WorkDirectory на обектаprocess, който е екземпляр на класаisc.py.test.Processт.е. текущия бизнес процес.${%PopulateUtils:Integer:1:100}извиква методаЦяло числоклас%PopulateUtils, предавайки аргументите1и100, връща случайно цяло число в диапазона1...100.
Тестов бизнес процес
Тестовата продукция и тестовия бизнес процес са налични по подразбиране като част от Python Gateway. За тяхното използване:
- В терминала на ОС изпълнете:
pip install pandas matplotlib seaborn. - В терминала на InterSystems IRIS изпълнете:
do ##class(isc.py.test.CannibalizationData).Import()за запълване на тестовите данни. - Стартирайте продукцията
isc.py.test.Production. - Изпратете заявка от тип
Ens.Requestвisc.py.test.Process.
Нека видим как всичко това работи заедно. Отворете isc.py.test.Process в редактора BPL:

Изпълнение на кода
Най-важният вик — изпълнението на Python кода:

Използва се заявка isc.py.msg.ExecutionRequest, ето ней properties:
Code— Python код.SeparateLines— дали да се разделя кодът на редове за изпълнение.$c(10)(n) се използва за разделяне на редове. Обърнете внимание, че НЕ се препоръчва да се обработва съобщението изцяло наведнъж, тази функция е предназначена само за обработкаdefи подобни многострочни изрази. По подразбиране0.Променливи— списък с променливи, разделени със запетая, които ще бъдат добавени в отговора.Сериализация— Как да сериализираме променливите, които искаме да върнем. Варианти:Str,Repr,JSON,PickleиDill, по подразбиранеStr.
В нашия случай просто задаваме свойството Code, така че всички останали свойства да използват стойности по подразбиране. Задаваме го с извикване на process.GetAnnotation("Import pandas"), което при изпълнение връща анотация след изпълнение на заместването на променливи. В крайна сметка, кодът import pandas as pd ще бъде предаден на Python. GetAnnotation може да бъде полезна за получаване на многострочни Python скриптове, но няма ограничения за този метод за получаване на код. Можете да зададете свойството Code по удобен за вас начин.
Получаване на променливи
Още един интересен вик с използване на isc.py.msg.ExecutionRequest — Корелационна матрица: Таблична:

Тя изчислява Корелационната матрица на страната на Python и извлича променливата corrmat обратно в InterSystems IRIS в JSON формат, чрез задаване на свойствата на заявката:
Променливи:"corrmat"Сериализация:"JSON"
Можем да видим резултатите в Visual Trace:

И ако имаме нужда от тази стойност в БП, можем да я получим така: callresponse.Variables.GetAt("corrmat").
Предаване на данни
Нека поговорим за предаване на данни от InterSystems IRIS в Python, всички заявки за предаване на данни реализират интерфейса isc.py.msg.DataRequest, който предоставя следните свойства:
Променлива— Python променлива, в която се записват данните.Type— тип на променливата:dataframe(pandas dataframe) илисписък.Namespace— област, от която получаваме данни. Пакетътisc.pyтрябва да бъде достъпен в тази област. Това може да е област без поддръжка на продукти.
На основата на този интерфейс са реализирани 4 класа заявки:
isc.py.msg.QueryRequest— задайте свойствоЗаявказа предаване на SQL заявка.isc.py.msg.ClassRequest— задайте свойствоClassза предаване на данни от клас.isc.py.msg.TableRequest— задайте свойствоТаблицаза предаване на данни от таблица.isc.py.msg.GlobalRequest— задайте свойствоGlobalза предаване на данни от глобална.
В тестовия процес погледнете активността, RAW, където isc.py.msg.QueryRequest показан в действие.

Запазване/възстановяване на контекста на Python
Накрая, можем да запазим контекста на Python в InterSystems IRIS, за да направим това, ще изпратим isc.py.msg.SaveRequest с аргументите:
Mask— Запазват се само променливи, удовлетворяващи маската. Поддържат се*и?. Пример:"Data*, Figure?". По подразбиране*.MaxLength— Максималната дължина на запазената променлива. Ако сериализацията на променливата е по-дълга, тя ще бъде игнорирана. Задайте 0, за да разрешите променливи с всяка дължина. По подразбиране$$$MaxStringLength.Name— Име на контекста (по избор).Описание— Описание на контекста (по избор).
Връща Ens.StringResponse с Id на запазения контекст. В тестовия процес следете активността Save Context.
Съответстващото запитване isc.py.msg.RestoreRequest зарежда контекста от InterSystems IRIS в Python:
ContextId— идентификатор на контекста.Изчисти— изчистете контекста преди възстановяване.
Jupyter Notebook
— това е уеб приложение с отворен код, което позволява създаването на ноутбуци, съдържащи код, визуализации и текст, и тяхното публикуване. Python Gateway позволява преглед и редактиране на BPL процеси под формата на Jupyter Notebook. Обърнете внимание, че в момента се използва стандартният изпълнител Python 3.
Тази разширение предполага, че анотацията съдържа Python код и използва имената на активностите като предходни заглавия. Сега е възможно да се разработват бизнес процеси PythonGateway в Jupyter Notebook. Ето какво е възможно:
- Създаване на нови бизнес процеси
- Изтриване на бизнес процеси
- Създаване на нови активности
- Промяна на активности
- Изтриване на активности
Ето . И няколко скрийншота:
Процесен изследовател

Редактор на процеса

Инсталиране
- Ще ви трябва InterSystems IRIS 2019.2+.
- Инсталирайте PythonGateway v0.8+ (изисква се само
isc.py.util.Jupyter,isc.py.util.JupyterCheckpointsиisc.py.ens.ProcessUtils). - Актуализирайте кода на ObjectScript от репозитория.
- Изпълнете
do ##class(isc.py.util.Jupyter).Install()и следвайте указанията.
.
Изводи
MLToolkit е набор от инструменти, чиято цел е да обедини модели и транзакционна среда, така че създадените модели да могат да се използват лесно направо във вашите бизнес процеси. Python Gateway е част от MLToolkit и осигурява интеграция с езика Python, позволявайки оркестрация на всякакви алгоритми за машинно обучение, създадени на Python (основната среда за много Data Scientists), използваща множество готови библиотеки за бързо създаване на адаптивни, роботизирани аналитични AI/ML решения на платформата InterSystems IRIS.
Връзки
MLToolkit
Група потребители на MLToolkit е частен GitHub репозиторий, създаден като част от корпоративната GitHub организация InterSystems. Той е насочен към външни потребители, които инсталират, изучават или вече използват компонентите на MLToolkit, включително Python Gateway. В групата е наличен редица реализирани случаи (с изходен код и тестови данни) в области като маркетинг, производство, медицина и много други сектори. За да се присъедините към групата на потребителите на ML Toolkit, моля, изпратете кратко съобщение по имейл на следния адрес: и посочете в писмото си следните данни:
- Потребителско име в GitHub
- Организация (в която работите или учите)
- Длъжност (вашата фактическа длъжност в организацията, или "Студент", или "Независим").
- Страна
На тези, които прочетоха статията и проявиха интерес към възможностите на InterSystems IRIS като платформа за разработка или хостинг на механизми за изкуствен интелект и машинно обучение, предлагаме да обсъдим възможни сценарии, представляващи интерес за вашето предприятие. С радост ще анализираме нуждите на вашето предприятие и ще определим заедно план за действие; контактният имейл на нашата експертна група AI/ML е - .
Източник: habr.com
