Python Gateway в InterSystems IRIS

Тази статия е за Python Gateway, обществен проект с отворен код за платформата за данни InterSystems IRIS. Този проект ви позволява да организирате всякакви алгоритми за машинно обучение, създадени в Python (основната среда за много изследователи на данни), да използвате многобройни готови библиотеки за бързо създаване на адаптивни, роботизирани аналитични AI / ML решения на платформата InterSystems IRIS. В тази статия ще ви покажа как InterSystems IRIS може да организира процеси на Python, да извършва ефективен двупосочен трансфер на данни и да създава интелигентни бизнес процеси.

план

  1. Въведение.
  2. Инструменти.
  3. Инсталация.
  4. API.
  5. Оперативна съвместимост.
  6. Тетрадка на Юпитер.
  7. Заключения.
  8. Връзки.
  9. M.L.Toolkit.

въведение

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, това е обектно-ориентиран език, но всичко се дефинира динамично, а не статично. Освен това всичко е обект. По-късните статии предполагат мимолетно познаване на езика. Ако искате да започнете да учите, препоръчвам да започнете с документация.
  • За следващите ни упражнения, задайте Python 3.6.7 64 бита.
  • IDE: Използвам PyCharm, но като цяло много. Ако използвате Atelier, има плъгин Eclipse за разработчици на Python. Ако използвате VS Code, тогава има разширение за Python.
  • Бележник: Вместо в IDE, можете да пишете и споделяте вашите скриптове в онлайн бележници. Най-популярният от тях е Юпитер.

библиотеки

Ето (частичен) списък с библиотеки за машинно обучение:

  • numpy — основен пакет за точни изчисления.
  • Пандите — високоефективни структури от данни и инструменти за анализ на данни.
  • Матплотлиб - Създаване на графики.
  • Морскородено - визуализация на данни, базирана на matplotlib.
  • Sklearn — методи за машинно обучение.
  • XGBoost — Алгоритми за машинно обучение в рамките на методологията Gradient Boosting.
  • Генсим — НЛП.
  • Keras - невронни мрежи.
  • Тензорен поток е платформа за създаване на модели за машинно обучение.
  • PyTorch е платформа за създаване на модели за машинно обучение, фокусирани върху Python.
  • Ниока - PMML от различни модели.

AI/ML технологиите правят бизнеса по-ефективен и адаптивен. Освен това днес тези технологии стават все по-лесни за разработване и прилагане. Започнете да учите за AI/ML технологиите и как те могат да помогнат на вашата организация да расте.

Инсталация

Има няколко начина за инсталиране и използване на Python Gateway:

  • операционна система
    • Windows
    • Linux
    • Mac
  • докер
    • Използвайте изображението от DockerHub
    • Създайте своя собствена визия

Независимо от метода на инсталиране, ще ви е необходим изходният код. Единственото място за изтегляне на кода е страница за издания. Съдържа тествани стабилни версии, просто вземете най-новата. В момента е 0.8, но след време ще има нови. Не клонирайте/изтегляйте хранилището, изтеглете най-новата версия.

операционна система

Ако инсталирате Python Gateway на операционна система, тогава първо (независимо от операционната система) ще трябва да инсталирате Python. За това:

  1. Инсталирайте Python 3.6.7 64 бита. Препоръчително е да инсталирате Python в директорията по подразбиране.
  2. Инсталирайте модула dill: pip install dill.
  3. Изтеглете кода на ObjectScript (т.е. do $system.OBJ.ImportDir("C:InterSystemsReposPythoniscpy", "*.cls", "c",,1)) до всяка област с продукти. В случай, че искате съществуваща област да поддържа продукции, стартирайте: write ##class(%EnsembleMgr).EnableNamespace($Namespace, 1).
  4. Място изявление DLL/SO/DYLIB към папката bin вашия екземпляр на InterSystems IRIS. Библиотечният файл трябва да е наличен в пътя, върнат от write ##class(isc.py.Callout).GetLib().

Windows

  1. Уверете се, че променливата на средата е PYTHONHOME сочи към Python 3.6.7.
  2. Уверете се, че променливата на системната среда е PATH съдържа променлива PYTHONHOME (или директорията, към която сочи).

Linux (Debian/Ubuntu)

  1. Проверете дали променливата на средата е PATH Той съдържа /usr/lib и /usr/lib/x86_64-linux-gnu. Използвайте файл /etc/environment за задаване на променливи на средата.
  2. В случай на грешки undefined symbol: _Py_TrueStruct задайте настройката PythonLib. също в Readme има раздел за отстраняване на неизправности.

Mac

  1. В момента се поддържа само Python 3.6.7 от python.org. Проверка на променлива PATH.

Ако сте променили променливите на средата, рестартирайте вашия InterSystems продукт.

докер

Използването на контейнери има редица предимства:

  • преносимост
  • ефикасност
  • Изолация
  • лекота
  • Неизменност

Вижте това поредица от статии за повече информация относно използването на 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 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 run -d 
  -p 52773:52773 
  -v /<HOST-DIR-WITH-iris.key>/:/mount 
  --name irispy 
  intersystemscommunity/irispy:latest 
  --key /mount/iris.key

Ако използвате изображение, базирано на InterSystems IRIS Community Edition, можете да пропуснете ключа.

Коментари

  • Процес на тестване isc.py.test.Process записва определен брой изображения във временна директория. Може да искате да промените този път на монтирана директория. За да направите това, редактирайте настройката WorkingDir посочване на монтираната директория.
  • За достъп до терминала изпълнете: 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 празен, проверете Readme—Секция за отстраняване на неизправности.

API

Python Gateway е инсталиран и сте проверили, че работи. Време е да започнете да го използвате!
Основният интерфейс към Python е isc.py.Main. Той предлага следните групи методи (всички връщат %Status):

  • Изпълнение на код
  • Трансфер на данни
  • спомагателен

Изпълнение на код

Тези методи ви позволяват да изпълнявате произволен код на Python.

SimpleString

SimpleString е основният метод. Необходими са 4 незадължителни аргумента:

  • code е редът от код за изпълнение. Символ за подаване на ред: $c(10).
  • returnVariable е името на променливата за връщане.
  • serialization - как да се сериализира returnVariable. 0 - низ (по подразбиране), 1 - повторение.
  • result - 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, в зависимост от сериализацията, от която се нуждаете:

  • String за прости типове данни и отстраняване на грешки.
  • 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
>6

InterSystems IRIS -> Python

Зареждане на данни от InterSystems IRIS в Python.

  • ExecuteQuery(query, variable, type, namespace) - създава набор от данни (панди dataframe или list) от sql заявка и я задайте на променлива на python variable. Найлонов плик isc.py трябва да са налични в района namespace - заявката ще бъде изпълнена там.
  • ExecuteGlobal(global, variable, type, start, end, mask, labels, namespace) - зарежда глобални данни global от надпис start до end в Python като тип променлива type: list, или панди dataframe. Описание на незадължителните аргументи mask намлява labels налични в документацията и хранилището на класа Документи за прехвърляне на данни.
  • ExecuteClass(class, variable, type, start, end, properties, namespace) - зарежда данни за класа class от ид start до end в Python като тип променлива type: list, или панди dataframe. properties — списък (разделен със запетая) на свойствата на класа, които да бъдат заредени в набора от данни. Маските се поддържат * и ?. По подразбиране - * (всички имоти). Имот %%CLASSNAME игнориран.
  • ExecuteTable(table, variable, type, start, end, properties, namespace) - зарежда таблични данни table от ид start до 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, в която се записват данните.
  • type - list или панди dataframe.
  • namespace - областта, в която ще се изпълни заявката.

ExecuteGlobal

ExecuteGlobal(global, variable, type, start, end, mask, labelels, namespace) - предаване на глобален към Python.

Аргументи:

  • global е името на глобалното без ^
  • variable - името на променливата на Python, в която се записват данните.
  • type - list или панди dataframe.
  • start — първият индекс на глобала. Задължително %Integer.
  • end е последният индекс на глобала. Задължително %Integer.
  • mask — маска на глобалните ценности. Маската може да бъде по-къса от броя на полетата в глобала (в този случай полетата в края ще бъдат пропуснати). Как да форматирате маската:
    • + предаване на стойността такава, каквато е.
    • - стойност за пропускане.
    • 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.

Аргументи:

  • class - име на клас
  • variable - името на променливата на Python, в която се записват данните.
  • type - list или панди dataframe.
  • start — начален номер
  • end - окончателно ид
  • properties — списък (разделен със запетая) на свойствата на класа, които да бъдат заредени в набора от данни. Маските се поддържат * и ?. По подразбиране - * (всички имоти). Имот %%CLASSNAME игнориран.
  • namespace - областта, в която ще се изпълни заявката.

Всички свойства се предават както са, с изключение на свойствата на типа %Date, %Time, %Boolean и %TimeStamp - те се преобразуват в съответните класове на Python.

ExecuteTable

увийте ExecuteClass. Превежда името на таблицата в име на клас и извиква ExecuteClass. Подпис:

ExecuteTable(table, variable, type, start, end, properties, namespace) - предаване на таблични данни към Python.

Аргументи:

  • table - име на таблица.
    Всички други аргументи се предават така, както са. ExecuteClass.

Забележки

  • ExecuteGlobal, ExecuteClass и ExecuteTable работят еднакво бързо.
  • ExecuteGlobal 20 пъти по-бързо от ExecuteQuery на големи масиви от данни (време за прехвърляне >0.01 секунда).
  • ExecuteGlobal, ExecuteClass и ExecuteTable работа върху глобали с тази структура: ^global(key) = $lb(prop1, prop2, ..., propN) където key е цяло число.
  • За ExecuteGlobal, ExecuteClass и ExecuteTable поддържан диапазон от стойности %Date съответства на диапазона mktime и зависи от ОСпрозорци: 1970-01-01, Linux 1900 01-01 Mac). Използвайте %TimeStampза предаване на данни извън този диапазон или използвайте pandas dataframe като това ограничение е само за списъка.
  • За ExecuteGlobal, ExecuteClass и ExecuteTable всички аргументи освен източник на данни (глобален, клас или таблица) и променлива не са задължителни.

Примеры

тест клас isc.py.test.Person съдържа метод, който демонстрира всички опции за пренос на данни:

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} извиква метод Integer клас %PopulateUtils, предаване на аргументи 1 и 100, връщайки произволно цяло число в диапазона 1...100.

Тествайте бизнес процес

Тестовото производство и тестовият бизнес процес са налични по подразбиране като част от Python Gateway. За да ги използвате:

  1. В OS терминал стартирайте: pip install pandas matplotlib seaborn.
  2. В терминала InterSystems IRIS изпълнете: do ##class(isc.py.test.CannibalizationData).Import() за попълване на тестови данни.
  3. Пуснете продукти isc.py.test.Production.
  4. Тип заявка за изпращане Ens.Request в isc.py.test.Process.

Нека видим как работи всичко заедно. отворен isc.py.test.Process в редактора на BPL:

Python Gateway в InterSystems IRIS

Изпълнение на код

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

Python Gateway в InterSystems IRIS

Заявката е използвана isc.py.msg.ExecutionRequest, ето неговите свойства:

  • Code — Python код.
  • SeparateLines - дали да се раздели кода на редове за изпълнение. $c(10) (n) се използва за разделяне на низове. Имайте предвид, че НЕ се препоръчва да обработвате цялото съобщение наведнъж, тази функция е само за обработка def и подобни многоредови изрази. По подразбиране 0.
  • Variables е разделен със запетаи списък с променливи, които ще бъдат добавени към отговора.
  • Serialization - Как да сериализираме променливите, които искаме да върнем. Настроики: Str, Repr, JSON, Pickle и Dill, по подразбиране Str.

В нашия случай ние само задаваме свойството Code, така че всички други свойства да използват своите стойности по подразбиране. Настройваме го с обаждане process.GetAnnotation("Import pandas"), който по време на изпълнение връща анотация след като е извършено заместване на променлива. Най-накрая кодът import pandas as pd ще бъдат предадени на Python. GetAnnotation може да бъде полезно за получаване на многоредови Python скриптове, но няма ограничения за този начин за получаване на код. Можете да зададете свойството Code по всеки удобен за вас начин.

Получаване на променливи

Друго интересно предизвикателство при използването isc.py.msg.ExecutionRequest - Correlation Matrix: Tabular:

Python Gateway в InterSystems IRIS

Той изчислява корелационната матрица от страна на Python и извлича променливата corrmat обратно към InterSystems IRIS във формат JSON, като зададете свойствата на заявката:

  • Variables: "corrmat"
  • Serialization: "JSON"

Можем да видим резултатите във Visual Trace:

Python Gateway в InterSystems IRIS

И ако имаме нужда от тази стойност в BP, тя може да бъде получена по следния начин: callresponse.Variables.GetAt("corrmat").

Трансфер на данни

След това нека поговорим за прехвърляне на данни от InterSystems IRIS към Python, всички заявки за прехвърляне на данни имплементират интерфейса isc.py.msg.DataRequest, който осигурява следните свойства:

  • Variable е променлива на Python, в която се записват данните.
  • Type - променлив тип: dataframe (рамка с данни на pandas) или list.
  • Namespace - областта, от която получаваме данни. Найлонов плик isc.py трябва да са налични в тази област. Това може да е област без продуктова поддръжка.

На базата на този интерфейс са реализирани 4 класа заявки:

  • isc.py.msg.QueryRequest - зададено свойство Query за изпращане на SQL заявка.
  • isc.py.msg.ClassRequest - зададено свойство Class за предаване на данни от класа.
  • isc.py.msg.TableRequest - зададено свойство Table за предаване на таблични данни.
  • isc.py.msg.GlobalRequest - зададено свойство Global за глобален пренос на данни.

В процеса на тестване вижте активността RAWКъдето isc.py.msg.QueryRequest показано в действие.

Python Gateway в InterSystems IRIS

Запазване/възстановяване на контекст на Python

И накрая, можем да съхраним контекста на Python в InterSystems IRIS, за да направим това, изпратете isc.py.msg.SaveRequest с аргументи:

  • Mask — Записват се само променливи, които отговарят на маската. Поддържа се * и ?, Пример: "Data*, Figure?"... По подразбиране *.
  • MaxLength — Максималната дължина на съхранената променлива. Ако сериализацията на променлива е по-дълга, тогава тя ще бъде игнорирана. Задайте 0, за да получите променливи с произволна дължина. По подразбиране $$$MaxStringLength.
  • Name — Име на контекста (по избор).
  • Description — Описание на контекста (по избор).

Се завръща Ens.StringResponse с Id запазен контекст. В процеса на тестване вижте активността Save Context.

Свързано искане isc.py.msg.RestoreRequest зарежда контекст от InterSystems IRIS в Python:

  • ContextId е контекстният идентификатор.
  • Clear — изчистване на контекста преди възстановяване.

Джупиър Бележник

Джупиър Бележник е уеб приложение с отворен код, което ви позволява да създавате и публикувате бележници, съдържащи код, визуализации и текст. Python Gateway ви позволява да преглеждате и редактирате BPL процеси като Jupyter Notebook. Имайте предвид, че в момента се използва обикновеният изпълнител на Python 3.

Това разширение предполага, че анотациите съдържат код на Python и използват имена на дейности като предходни заглавия. Вече е възможно да се разработват бизнес процеси на PythonGateway в Jupyter Notebook. Ето какво е възможно:

  • Създайте нови бизнес процеси
  • Изтриване на бизнес процеси
  • Създайте нови дейности
  • Променете дейностите
  • Изтриване на дейности

тук е демо видео. И малко екранни снимки:

Process Explorer

Python Gateway в InterSystems IRIS

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

Python Gateway в InterSystems IRIS

Инсталация

  1. Ще ви трябва InterSystems IRIS 2019.2+.
  2. Инсталирайте PythonGateway v0.8+ (изисква само isc.py.util.Jupyter, isc.py.util.JupyterCheckpoints и isc.py.ens.ProcessUtils).
  3. Актуализирайте кода на ObjectScript от хранилището.
  4. Изпълни do ##class(isc.py.util.Jupyter).Install() и следвайте подканите.

Документация.

Данни

MLToolkit е набор от инструменти, който има за цел да комбинира модели и транзакционна среда, така че изградените модели да могат лесно да се използват директно във вашите бизнес процеси. Python Gateway е част от MLToolkit и осигурява интеграция с езика Python, което ви позволява да организирате всички алгоритми за машинно обучение, създадени в Python (основната среда за много специалисти по данни), да използвате множество готови библиотеки за бързо създаване на адаптивен, роботизиран аналитичен AI / ML решения на платформата InterSystems IRIS.

Позоваването

MLToolkit

Потребителската група на MLToolkit е частно GitHub хранилище, създадено като част от корпоративната GitHub организация на InterSystems. Той е адресиран до външни потребители, които инсталират, учат или вече използват компоненти на MLToolkit, включително Python Gateway. Групата има редица внедрени случаи (с изходен код и тестови данни) в областта на маркетинга, производството, медицината и много други индустрии. За да се присъедините към потребителската група на ML Toolkit, моля, изпратете кратък имейл на следния адрес: [имейл защитен] и включете следната информация в писмото си:

  • GitHub потребителско име
  • Организация (работите или учите)
  • Позиция (вашата действителна позиция във вашата организация, или „Студент“, или „Независим“).
  • Страна

За тези, които са прочели статията и се интересуват от InterSystems IRIS като платформа за разработване или хостване на изкуствен интелект и механизми за машинно обучение, ви каним да обсъдите възможни сценарии от интерес за вашето предприятие. С готовност ще анализираме нуждите на Вашето предприятие и съвместно ще изготвим план за действие; имейл адрес за връзка с нашата експертна група за AI/ML – [имейл защитен].

Източник: www.habr.com

Добавяне на нов коментар