Python Gateway InterSystems IRIS-s

See artikkel on pühendatud Python Gateway'ile — avatud lähtekoodiga kogukonnaprojektile InterSystems IRIS andmeplatvormile. See projekt võimaldab orkestreerida mis tahes masinõppe algoritme, mis on loodud Pythonis (peamine keskkond paljude andmeteadlaste jaoks), kasutades arvukalt valmis teeke paindlike, robotiseeritud analüütiliste AI/ML lahenduste kiireks loomiseks InterSystems IRIS platvormil. Selles artiklis näitan, kuidas InterSystems IRIS saab orkestreerida protsesse Pythoni keeles, efektiivselt korraldada andmete kahepoolset edastamist ja luua intelligentseid äriprotsesse.

Plaani

  1. Sissejuhatus.
  2. Tööriistakomplekt.
  3. Paigaldamine.
  4. API.
  5. Interoperatiivsusus.
  6. Jupyter Notebook.
  7. Järeldused.
  8. Lingid.
  9. MLToolkit.

Sissejuhatus

Python on kõrgema taseme üldotstarbeline programmeerimiskeel, mis on suunatud arendaja tootlikkuse ja koodi loetavuse parandamisele. Selles artiklite sarjas räägin Python'i rakendamise võimalustest InterSystems IRIS platvormil, keskendudes peamiselt Python'i kasutamisele masinõppe mudelite loomisel ja rakendamisel.

Masinõpe (ML) on tehisintellekti meetodite klass, mille iseloomulikuks tunnuseks on ülesande otsese lahendamise võimaluse asemel sarnaste ülesannete lahendamine õppimise kaudu.

Masinõppe algoritmid ja mudelid saavad üha enam levinud. Selle põhjuseid on palju, kuid kõik taandub kergusele, lihtsusele ja praktilise tulemuse saavutamisele. Kas klasterdamine või isegi närvivõrgu modelleerimine on uus tehnoloogia?

Muidugi mitte, kuid praegu pole enam vaja kirjutada sadu tuhandeid ridu koodi, et käivitada üks mudel, ja mudelite loomise ja rakendamise kulud vähenevad järjest enam.

Tööriistad arenevad — kuigi meil pole täielikult GUI-orienteeritud AI/ML tööriistu, siis areng, mida oleme täheldanud paljude teiste infosüsteemide klassidega, näiteks BI (koodikirjutamisest raamistike ja GUI-orienteeritud konfigureeritavate lahenduste kasutamiseni), toimub samuti AI/ML loomise tööriistades. Oleme juba ületanud koodikirjutamise etapi ja täna kasutame mudelite loomise ja õpetamise raamistikke.

Teised täiustused, nagu eelõppemudeli levitamise võimalus, kus lõppkasutaja peab lihtsalt lõpetama mudeli treenimise oma spetsiifiliste andmete peal, lihtsustavad masinõppe rakenduse alustamist. Need saavutused muudavad masinõppe õppimise oluliselt lihtsamaks nii spetsialistide kui ka ettevõtete jaoks tervikuna.

Teisest küljest kogume järjest rohkem andmeid. Ühtse andmeplatvormi, nagu InterSystems IRIS, abil saab kogu see teave koheselt ette valmistada ja kasutada masinõppe mudelite lähtedata.

Pilve ülemineku tõttu on AI/ML-projektide käivitamine lihtsam kui kunagi varem. Saame kasutada ainult neid ressursse, mis meile vajalikud on. Veelgi enam, tänu pilveplatvormide pakutavale paralleelsusele suudame säästa kulutatud aega.

Aga kuidas on tulemustega? Siin läheb kõik keeruliseks. On palju tööriistu mudelite ehitamiseks, millest ma räägin hiljem. Hea mudeli ehitamine pole lihtne, aga mis edasi? Tulu saamine mudeli kasutamisest äris on samuti keeruline ülesanne. Probleemi juured peituvad analüütiliste ja tehingute koormate ning andmemudelite lahendamises. Kui treenime mudelit, teeme seda tavaliselt ajalooliste andmete peal. Ent ehitatud mudeli koht on tehinguandmete töötlemises. Mis kasu on parimast petukaupade tuvastamise mudelist, kui käivitame seda ainult kord päevas? Petised on raha juba ammu kaasa võtnud. Me peame treenima mudelit ajalooliste andmete peal, aga me peame seda rakendama ka reaalajas uute saabuvate andmete peal, et meie äri protsessid saaksid toimida vastavalt mudeli tehtud prognoosidele.

ML Toolkit on tööriistade komplekt, mille eesmärk on just see: mudelite ja tehingu keskkonna ühendamine, et ehitatud mudeleid saaks hõlpsasti teie äriprotsessides kasutada. Python Gateway on osa ML Toolkit-st ja tagab integreerimise Pythoniga (sarnaselt R Gateway-ga, mis koos ML Toolkit-iga tagab integreerimise R-iga).

Tööriistakomplekt

Enne kui jätkame, tahaksin tutvustada mõningaid Python'i tööriistu ja raamatukogusid, mida me hiljem kasutame.

Tehnoloogiad

  • Python on tõlgendatav, kõrgema taseme üldotstarbeline programmeerimiskeel. Keele peamine eelis on suur matemaatika, ML ja AI raamatukogu. Nagu ObjectScript, on see objektorienteeritud keel, kuid kõik määratakse dünaamiliselt, mitte staatiliselt. Samuti on kõik objekt. Hilisemad artiklid eeldavad, et teil on keele kohta pinnapealne tutvustus. Kui soovite alustada õppimist, soovitan alustada dokumentatsioon.
  • Meie järgmiste harjutuste jaoks installige Python 3.6.7 64 bit.
  • IDE: kasutan PyCharm, aga neid on palju. Kui kasutate Atelier'i, siis on olemas Eclipse'i plugin Python'i arendajatele. Kui kasutate VS Code'i, siis on olemas Python'i laiendus.
  • Notebook: IDE asemel saate oma skripte kirjutada ja jagada veebipõhistes märkmikes. Kõige populaarsem neist on Jupyter.

Raamatukogud

Siin on (puudulik) nimekiri masinõppe raamatukogudest:

AI/ML tehnoloogiad võimaldavad teha äri tõhusamaks ja kohanemisvõimelisemaks. Rohkemgi veel, need tehnoloogiad muutuvad täna arendamiseks ja rakendamiseks lihtsamaks. Alustage AI/ML tehnoloogiate õppimist ja sellega, kuidas need võivad aidata teie organisatsioonil kasvada.

Paigaldamine

On mitmeid viise Python Gateway'i installimiseks ja kasutamiseks:

  • on teil alati kõige uuemad tarkvaralahendused.
    • Windows
    • Linux
    • Mac
  • Docker
    • Kasutage DockerHub'i kujutist
    • Looge oma enda kujutis

Ükskõik, kuidas te installite, vajate lähtekoodi. Ains koht koodi allalaadimiseks on vabastamise leht. See sisaldab testitud stabiilseid versioone, võtke lihtsalt viimane. Hetkel on see 0.8, kuid ajaga tuleb uusi. Ärge kloonige/laadige alla reposiit, laadige alla viimane versioon.

on teil alati kõige uuemad tarkvaralahendused.

Kui installite Python Gateway operatsioonisüsteemi, peate esmalt (ükskõik millisest operatsioonisüsteemist) installima Python. Selleks:

  1. Installige Python 3.6.7 64 bit. Soovitav on installida Python vaikekausta.
  2. Installige moodul dill: pip install dill.
  3. Laadige ObjectScript kood (st. do $system.OBJ.ImportDir("C:InterSystemsReposPythoniscpy", "*.cls", "c",,1)) ükskõik millises valdkonnas tooteid. Kui soovite, et olemasolev valdkond toetaks tooteid, tehke järgmist: write ##class(%EnsembleMgr).EnableNamespace($Namespace, 1).
  4. Asetage callout DLL/SO/DYLIB kausta bin teie InterSystems IRIS instantsis. Raamatukogu fail peab olema kätte saadav teelt, mille tagastab write ##class(isc.py.Callout).GetLib().

Windows

  1. Veenduge, et keskkonnamuutuja PYTHONHOME osutab Python 3.6.7-le.
  2. Veenduge, et süsteemi keskkonnamuutuja PATH sisaldab muutujat PYTHONHOME (või katalooge, millele see osutab).

Linux (Debian/Ubuntu)

  1. Kontrollige, et keskkonnamuutuja PATH sisaldab /usr/lib ja /usr/lib/x86_64-linux-gnu. Kasutage faili /etc/environment keskkonnamuutujate seadistamiseks.
  2. Vigade korral undefined symbol: _Py_TrueStruct seadke konfiguratsioon PythonLib. Samuti on Readme-s osa tõrkeotsingust.

Mac

  1. Praegu toetatakse ainult Python 3.6.7 versiooni lehelt Python.org.Kontrollige muutujaid PATH.

Kui olete keskkonnamuutujaid muutnud, taaskäivitage oma InterSystems toode.

Docker

Konteinerite kasutamisel on mitmeid eeliseid:

  • Kantavus
  • Tõhusus
  • Isolatsioon
  • Kergus
  • Muudetavus

Tutvuge selle artiklite sarjaga rohkema teabe saamiseks Docker'i kasutamisest InterSystems toodetega.

Kõik Python Gateway kogud põhinevad praegu konteineritel 2019.4.

Valmis pilt

Käivitage: docker run -d -p 52773:52773 --name irispy intersystemscommunity/irispy-community:latest, et laadida ja käivitada Python Gateway InterSystems IRIS Community Edition'iga. Nii lihtne see on.

Looge oma enda kujutis

Dokker-pildi koostamiseks käivitage reposi juuris: docker build --force-rm --tag intersystemscommunity/irispy:latest ..
Vaikimisi koostatakse pilt pildi põhjal store/intersystems/iris-community:2019.4.0.383.0, kuid saate seda muuta, seadistades muutuja IMAGE.
InterSystems IRIS'est koostamiseks käivitage: `docker build —build-arg IMAGE=store/intersystems/iris:2019.4.0.383.0 —force-rm —tag intersystemscommunity/irispy:latest`.

Pärast seda võite käivitada dokker-pildi:

docker run -d 
  -p 52773:52773 
  -v //:/mount 
  --name irispy 
  intersystemscommunity/irispy:latest 
  --key /mount/iris.key

Kui kasutate pilti, mis põhineb InterSystems IRIS Community Edition'il, ei pruugi te võtit määrata.

Kommentaarid

  • Testimisprotsess 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 — Troubleshooting section.

API

Python Gateway установлен, и вы убедились, что он работает. Пора начинать его использовать!
Главный интерфейс к Python это isc.py.Main. Он предлагает следующие группы методов (все возвращают %Status):

  • Исполнение кода
  • Andmete edastamine
  • Вспомогательные

Исполнение кода

Эти методы позволяют исполнять произвольный Python-код.

SimpleString

SimpleString — это основной метод. Он принимает 4 опциональных аргумента:

  • code — строка кода для выполнения. Символ перевода строки: $c(10).
  • returnVariable — имя переменной для возврата.
  • serialization — как сериализовать returnVariable. 0 — string (по умолчанию), 1 — repr.
  • result — ByRef ссылка на переменную, в которую записывается значение returnVariable.

Выше мы выполнили:

set sc = ##class(isc.py.Main).SimpleString("x='HELLO'", "x", , .var).

В данном примере мы присваиваем переменной Python x väärtuse Tere и хотим вернуть значение 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.

Andmete edastamine

Передавайте данные в Python и обратно.

Python -> InterSystems IRIS

Есть 4 способа получить значение Python переменной в InterSystems IRIS, в зависимости от сериализации, которая вам нужна:

  • String lihtsate andmete tüüpide ja silumise jaoks.
  • Repr lihtsate objektide salvestamiseks ja silumise jaoks.
  • JSON andmete lihtsaks manipuleerimiseks InterSystems IRIS-i küljel.
  • Pickle objektide salvestamiseks.

Need meetodid võimaldavad saada muutujaid Pythonis stringi või voogena.

  • GetVariable(variable, serialization, .stream, useString) — saada serialization muutuja variable ja stream. Kui useString on 1 ja serialiseerimine pannakse stringi, tagastatakse string, mitte voog.
  • GetVariableJson(variable, .stream, useString) — saada JSON serialiseerimise muutuja.
  • GetVariablePickle(variable, .stream, useString, useDill) — saada Pickle (või Dill) serialiseerimise muutuja.

Proovime saada meie muutuja y.

set sc = ##class(isc.py.Main).GetVariable("y", , .val, 1)
write val
>6

InterSystems IRIS -> Python

Laeme andmeid InterSystems IRIS-st Pythonisse.

  • ExecuteQuery(query, variable, type, namespace) — loob andmekogumi (pandas dataframe või loend) sql päringu põhjal ja määrab selle Python muutuja. variable. Pakett isc.py peab olema saadaval alal namespace — seal hakatakse päringut täitma.
  • ExecuteGlobal(global, variable, type, start, end, mask, labels, namespace) — laadib globaali andmed global alamskripti start kuni lõpeta Pythonis muutuja tüüpi type: loend, või pandas dataframe. Valikute argumentide kirjeldus mask ja labels on saadaval klassi dokumentatsioonis ja hoidlas Andmeülekande dokumendid.
  • ExecuteClass(class, variable, type, start, end, properties, namespace) — laadib klassi andmed class id-st start kuni lõpeta Pythonis muutuja tüüpi type: loend, või pandas dataframe. properties — omaduste loetelu (eraldaja - koma), mida tuleb andmekogusse laadida. Toetatakse maske * ja ?. Vaikimisi — * (kõik omadused). Omadus %%CLASSNAME ignored.
  • ExecuteTable(table, variable, type, start, end, properties, namespace) — laadib tabeli andmed table id-st start kuni lõpeta Pythonisse.

ExecuteQuery — universaalne (iga korrektne SQL-päring edastatakse Pythonisse). Siiski, ExecuteGlobal ja selle ümbrised ExecuteClass ja ExecuteTable töötavad mitmete piirangutega. Need on palju kiirem (3-5 korda kiiremini ODBC-draiverist ja 20 korda kiiremini ExecuteQuery). Täiendav teave Andmeülekande dokumendid.
Kõik need meetodid toetavad andmete edastamist igast piirkonnast. Pakett isc.py peab olema saadaval sihtpiirkonnas.

ExecuteQuery

ExecuteQuery(request, variable, type, namespace) — edastab iga korrektse SQL-päringu tulemused Pythonisse. See on andmete edastamise kõige aeglasem meetod. Kasutage seda, kui ExecuteGlobal ja selle ümbrised pole saadaval.

Argumentid:

  • query — sql päring.
  • variable — Python muutuja nimi, kuhu andmed salvestatakse.
  • typeloend või Pandas dataframe.
  • namespace — piirkond, kus päring täidetakse.

ExecuteGlobal

ExecuteGlobal(global, variable, type, start, end, mask, labels, namespace) — globaali edastamine Pythonisse.

Argumentid:

  • global — globaali nimi ilma ^
  • variable — Python muutuja nimi, kuhu andmed salvestatakse.
  • typeloend või Pandas dataframe.
  • start — esimene globaalne alamskript. Kohustuslik %Integer.
  • lõpeta — viimane globaalne alamskript. Kohustuslik %Integer.
  • mask — globaalsete väärtuste mask. Mask võib olla lühem kui globaalsete väljade arv (sellisel juhul jäetakse lõpus väljad vahele). Kuidas maski vormindada:
    • + edasta väärtus sellisena, nagu see on.
    • - jäta väärtus vahele.
    • b — Loogiline tüüp (0Vale, kõik muu — Tõsi).
    • d — Kuupäev ($horolog, Windowsis alates 1970, Linuxis alates 1900).
    • t — Aeg ($horolog, sekundid keskööst).
    • m — Aja märge (aasta-kuu-päev tund:minuut:sekund formaadis).
  • labels — %Loend veergude nimedest. Esimene element — alamskripti nimi.
  • namespace — piirkond, kus päring täidetakse.

ExecuteClass

Kapseldus ExecuteGlobal. Klassi määratluse põhjal valmistab ette kutse ExecuteGlobal ja kutsub selle esile.

ExecuteClass(class, variable, type, start, end, properties, namespace) — Klasside andmete edastamine Pythonis.

Argumentid:

  • class — klassi nimi
  • variable — Python muutuja nimi, kuhu andmed salvestatakse.
  • typeloend või Pandas dataframe.
  • start — algne Id.
  • lõpeta — lõpp Id
  • properties — omaduste loetelu (eraldaja - koma), mida tuleb andmekogusse laadida. Toetatakse maske * ja ?. Vaikimisi — * (kõik omadused). Omadus %%CLASSNAME ignored.
  • namespace — piirkond, kus päring täidetakse.

Kõik omadused edastatakse sellisena, nagu need on, välja arvatud tüübi omadused %Date, g, %Loogiline ja %AjaMärk — need konverteeritakse vastavatesse Python klassidesse.

ExecuteTable

Kapseldus ExecuteClass. Edastab tabeli nime klassi nime ja kutsub selle esile ExecuteClass. Allkiri:

ExecuteTable(table, variable, type, start, end, properties, namespace) — tabeli andmete edastamine Pythonis.

Argumentid:

  • table — tabeli nimi.
    Kõik teised argumendid edastatakse sellisena, nagu need on ExecuteClass.

Märkused

  • ExecuteGlobal, ExecuteClass ja ExecuteTable töötavad sama kiiresti.
  • ExecuteGlobal 20 korda kiiremini kui ExecuteQuery suurte andmekogude korral (andmete edastamise aeg >0.01 sekundit).
  • ExecuteGlobal, ExecuteClass ja ExecuteTable töötavad globaalidega, millel on antud struktuur: ^global(key) = $lb(prop1, prop2, ..., propN) kus key — täisarv.
  • Tooge ExecuteGlobal, ExecuteClass ja ExecuteTable toetatud väärtuste vahemik %Date vastab vahemikule mktime ja sõltub opsüsteemist (windows: 1970-01-01, linux 1900-01-01, mac). Kasutage %AjaMärkandmete edastamiseks sellest vahemikust väljapoole või kasutage pandas dataframe'i, kuna see piirang kehtib ainult loendi kohta.
  • Tooge ExecuteGlobal, ExecuteClass ja ExecuteTable kõik argumendid välja arvatud andmeallikas (globaal, klass või tabel) ja muutuja on valikulised.

Näited

Testklass isc.py.test.Person sisaldab meetodit, mis demonstreerib kõiki andmete edastamise variante:

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"

// Üldised argumendid
set variable = "df"
set type = "dataframe"
set start = 1
set end = $g(^isc.py.test.PersonD, start)

// Meetod 0: ExecuteGlobal ilma argumentideta
set sc = ##class(isc.py.Main).ExecuteGlobal(global, variable _ 0, type)

// Meetod 1: ExecuteGlobal argumentidega    
// Kui edastate globaalset, määratakse väljade nimetused käsitsi
// globalKey - subskripti nimi 
set labels = $lb("globalKey", "Name", "DOB", "TS", "RandomTime", "AgeYears", "AgeDecimal", "AgeDouble", "Bool")

// mask sisaldab ühe elemendi vähem kui labels, kuna "globalKey" - subskripti nimi
// Jätame vahele %%CLASSNAME
set mask = "-+dmt+++b"

set sc = ##class(isc.py.Main).ExecuteGlobal(global, variable _ 1, type, start, end, mask, labels)

// Meetod 2: ExecuteClass
set sc = ##class(isc.py.Main).ExecuteClass(class, variable _ 2, type, start, end)

// Meetod 3: ExecuteTable
set sc = ##class(isc.py.Main).ExecuteTable(table, variable _ 3, type, start, end)

// Meetod 4: ExecuteTable
set sc = ##class(isc.py.Main).ExecuteQuery(query, variable _ 4, type)

Käivitage meetod do ##class(isc.py.test.Person).Test() et näha, kuidas töötab kõik andmete edastamise meetodid.

Abimeetodid

  • GetVariableInfo(variable, serialization, .defined, .type, .length) — saada teavet muutuja kohta: kas see on määratud, klass ja serialiseerimise pikkus.
  • GetVariableDefined(variable, .defined) — kas muutuja on määratud.
  • GetVariableType(variable, .type) — saada muutuja klassi.
  • GetStatus() — saada ja eemaldada viimane erand Python'i poolel.
  • GetModuleInfo(module, .imported, .alias) — saada mooduli muutuja ja importimise staatus.
  • GetFunctionInfo(function, .defined, .type, .docs, .signature, .arguments) — saada teavet funktsiooni kohta.

Ühenduvus

Olete õppinud, kuidas kutsuda Python Gateway'i terminalist, nüüd alustame selle kasutamist toodetes. Python'i integreerimise aluseks sellises režiimis on isc.py.ens.Operation. See võimaldab meil:

  • Käivitada koodi Python'is
  • Salvestada/taastada Python konteksti
  • Laadida ja saada andmeid Python'ist

Põhimõtteliselt on Python'i operatsioon ümberringi kapseldamine isc.py.Main. Operatsioon isc.py.ens.Operation võimaldab interakteeruda Python'i protsessiga InterSystems IRIS toodetest. Toetatakse viit päringut:

  • isc.py.msg.ExecutionRequest Python koodi täitmiseks. Tagastab isc.py.msg.ExecutionResponse täitmise tulemuse ja küsitud muutujate väärtused.
  • isc.py.msg.StreamExecutionRequest Python koodi täitmiseks. Tagastab isc.py.msg.StreamExecutionResponse täitmise tulemuse ja küsitud muutujate väärtused. Sarnane isc.py.msg.ExecutionRequest, kuid võtab ja tagastab vooge jõude asemel stringe.
  • isc.py.msg.QueryRequest SQL päringu täitmise tulemuse edastamiseks. Tagastab Ens.Response.
  • isc.py.msg.GlobalRequest/isc.py.msg.ClassRequest/isc.py.msg.TableRequest andmete edastamiseks globaalsete /klasside /tabelite jaoks. Tagastab Ens.Response.
  • isc.py.msg.SaveRequest Python konteksti salvestamiseks. Tagastab Ens.StringResponse konteksti identifikaatoriga.
  • isc.py.msg.RestoreRequest Python konteksti taastamiseks.

    Lisaks, isc.py.ens.Operation on kaks seadistust:

    • Initializer — klassi valik, mis rakendab liidest isc.py.init.Abstract. Seda saab kasutada funktsioonide, moodulite, klasside jne laadimiseks. See täidetakse üks kord protsessi käivitamisel.
    • PythonLib — (ainult Linuxi jaoks) kui näete laadimisel vigu, seadke selle väärtus libpython3.6m.so või isegi täielik tee Python teeki.

Äriprocesside loomine

Kaks klassi on saadaval, et lihtsustada äriprotsesside arendamist:

  • isc.py.ens.ProcessUtils võimaldab saada tõlgendusi tegevustest, asendades muutujaid.
  • isc.py.util.BPEmulator võimaldab hõlpsasti testida äriprotsesse Pythonis. See suudab täita äriprotsessi (Python keeles osasid) jooksval protsessil.

Muutujate asendamine

Kõik äriprotsessid, mis pärivad isc.py.ens.ProcessUtils, saavad kasutada meetodit GetAnnotation(name) aktiivsuse tõlgenduse väärtuse saamiseks selle nime järgi. Tegevuse tõlgendus võib sisaldada muutujaid, mis arvutatakse InterSystems IRIS'i küljel enne Pythonisse saatmist. Siin on muutuja asendamise süntaks:

  • ${class:method:arg1:...:argN} — meetodi kutsumine
  • #{expr} — koodi täitmine ObjectScript keeles.

Näide on saadaval testivas äriprotsessis isc.py.test.Process, näiteks tegevuses Correlation Matrix: Graph: f.savefig(r'#{process.WorkDirectory}SHOWCASE${%PopulateUtils:Integer:1:100}.png'). Selles näites:

  • #{process.WorkDirectory} tagastab objekti WorkDirectory omaduse process, mis on klassi eksemplar isc.py.test.Process st. käesolev äriprotsess.
  • ${%PopulateUtils:Integer:1:100} kutsib meetodi Integer klassist %PopulateUtils, edastades argumendid 1 ja 100, tagastades juhusliku täisarvu vahemikus 1...100.

Testimisprotsess

Testtooted ja testimisprotsess on vaikimisi saadaval osana Python Gateway'st. Kasutamiseks:

  1. Käivitage OS terminalis: pip install pandas matplotlib seaborn.
  2. Käivitage InterSystems IRIS terminalis: do ##class(isc.py.test.CannibalizationData).Import() testandmete täitmiseks.
  3. Käivitage toode isc.py.test.Production.
  4. Saada nõue tüüpi Ens.Request ja isc.py.test.Process.

Vaadake, kuidas kõik see koos toimib. Avage isc.py.test.Process BPL redaktoris:

Python Gateway InterSystems IRIS-s

Исполнение кода

Kõige olulisem kutse - Python koodi täitmine:

Python Gateway InterSystems IRIS-s

Kasutatakse nõuet isc.py.msg.ExecutionRequest, siin on selle omadused:

  • Kood — Python kood.
  • SeparateLines — kas jagada kood readeks täitmiseks. $c(10) (n) kasutatakse ridade eraldamiseks. Pange tähele, et kogu sõnumit korraga töödelda ei soovitata, see funktsioon on mõeldud ainult töötlemiseks def ja sarnaste mitmerealiste avalduste jaoks. Vaikimisi 0.
  • Variables — koma eraldatud muutuja nimekiri, mis lisatakse vastusesse.
  • Serialiseerimine — Kuidas serialiseerida muutujaid, mida me soovime tagasi saata. Valikud: Str, Repr, JSON, Pickle ja Dill, vaikimisi Str.

Meie puhul seadistame ainult omaduse Kood, nii et kõik teised omadused kasutavad vaikimisi väärtusi. Seadistame selle, kutsudes process.GetAnnotation("Import pandas"), mis tagastab käitamise ajal annotatsiooni pärast muutuja asendusi. Lõpuks import pandas as pd edastatakse Pythonile. GetAnnotation võib olla kasulik mitmerealiste Python skriptide saamiseks, kuid selle koodi saamise meetodil ei ole mingit piirangut. Saate seada omaduse Kood igati mugaval viisil.

Muutujate saamine

Veel üks huvitav väljakutse, kasutades isc.py.msg.ExecutionRequestKorrelatsioonide Maatriks: Tabel:

Python Gateway InterSystems IRIS-s

See arvutab Korrelatsioonide Maatriksi Pythonis ja ekstraktib muutuja corrmat tagasi InterSystems IRIS-s JSON formaadis, seades päringu omadused:

  • Variables: "corrmat"
  • Serialiseerimine: "JSON"

Saame tulemusi Visual Trace'is näha:

Python Gateway InterSystems IRIS-s

Ja kui see väärtus on meile BP-s vajalik, saame selle kätte nii: callresponse.Variables.GetAt("corrmat").

Andmete edastamine

Järgmisena räägime andmete edastamisest InterSystems IRIS-st Pythonisse, kõik andmete edastamise päringud rakendavad liidest isc.py.msg.DataRequest, mis pakub järgmisi omadusi:

  • Variable — Python muutuja, kuhu andmed salvestatakse.
  • Tüüp — muutuja tüüp: dataframe (pandas dataframe) või loend.
  • Namespace — ala, kust andmeid saadakse. Pakett isc.py peab olema selles väljas saadaval. See võib olla ala, mis ei toeta tootmisi.

Selle liidese alusel on rakendatud 4 päringute klassi:

  • isc.py.msg.QueryRequest — seadistage omadus Query SQL päringu edastamiseks.
  • isc.py.msg.ClassRequest — seadistage omadus Class klassi andmete edastamiseks.
  • isc.py.msg.TableRequest — seadistage omadus Table tabeli andmete edastamiseks.
  • isc.py.msg.GlobalRequest — seadistage omadus Global globaalsete andmete edastamiseks.

Testimisprotsessi käigus vaadake aktiivsust RAW, kus isc.py.msg.QueryRequest näidatakse tegevuses.

Python Gateway InterSystems IRIS-s

Python konteksti salvestamine / taastamine

Lõpuks saame salvestada Python konteksti InterSystems IRIS-s, et seda teha, saadame isc.py.msg.SaveRequest argumendina:

  • Mask — Salvestatakse ainult need muutujad, mis vastavad maskile. Toetatakse * ja ?. Näidis: "Data*, Figure?". Vaikimisi *.
  • MaxLength — Muutmise maksimaalne pikkus. Kui muutuja seerumine on pikem, jäetakse see tähelepanuta. Seadke väärtuseks 0, et lubada muutujate mistahes pikkust. Vaikimisi $$$MaxStringLength.
  • Nimi — Konteksti nimi (valikuline).
  • Kirjeldus — Konteksti kirjeldus (valikuline).

Tagastab Ens.StringResponse jot Id salvestatud konteksti. Testimisprotsessi ajal vaadake aktiivsuseid Salvesta kontekst.

Vastav päring isc.py.msg.RestoreRequest laeb konteksti InterSystems IRIS-elt Pythonisse:

  • KontekstiId — konteksti identifikaator.
  • Kustuta — puhasta konteksti enne taastamist.

Jupyter Notebook

Jupyter Notebook — avatud lähtekoodiga veebirakendus, mis võimaldab luua kõvakettakujulisi faile, mis sisaldavad koodi, visualiseerimist ja teksti ning neid avaldada. Python Gateway võimaldab vaadata ja redigeerida BPL-protsesse Jupyter Notebooki vormis. Pange tähele, et hetkel kasutatakse tavalist Python 3 executor'i.

See laiend arvab, et annotatsioonid sisaldavad Python'i koodi ja kasutavad tegevuste nimesid eelpealkirjadena. Nüüd on võimalik arendada PythonGateway äriprotsesse Jupyter Notebookis. Siin on, mida on võimalik:

  • Luua uusi äriprotsesse
  • Kustutada äriprotsesse
  • Luua uusi tegevusi
  • Muuta tegevusi
  • Kustutada tegevusi

Siin demo-video. Ja mõned ekraanipildid:

Protsesside sirvija

Python Gateway InterSystems IRIS-s

Protsessi redaktor

Python Gateway InterSystems IRIS-s

Paigaldamine

  1. Vajate InterSystems IRIS 2019.2+.
  2. Installige PythonGateway v0.8+ (vajalik ainult isc.py.util.Jupyter, isc.py.util.JupyterCheckpoints ja isc.py.ens.ProcessUtils).
  3. Uuendage ObjectScript'i koodi hoidlast.
  4. Käivitage do ##class(isc.py.util.Jupyter).Install() ja järgige juhiseid.

Dokumentatsioon.

Järeldused

MLToolkit on tööriistade komplekt, mille eesmärk on liita mudelid ja tehingute keskkond, et loodud mudeleid saaks hõlpsasti kasutada otse teie äriprotsessides. Python Gateway on osa MLToolkit'ist ja tagab integreerimise Python'i keelega, võimaldades orkestreerida kõiki masinõppe algoritme, mis on loodud Python'is (paljude andeteadlaste põhiline keskkond), kasutades arvukalt valmis teeke kiireks muudetavate ja automatiseeritud analüüsivõime AI/ML lahenduste loomiseks InterSystems IRIS platvormil.

Viidatud lingid

MLToolkit

MLToolkit'i kasutajate grupp on privaatne GitHubi hoidla, mis on loodud osana InterSystems'i ettevõtte GitHubi organisatsioonist. See on suunatud välistele kasutajatele, kes installivad, uurivad või juba kasutavad MLToolkit komponente, sealhulgas Python Gateway'd. Grupis on saadaval mitmeid rakendatud juhtumeid (koos lähtekoodi ja testandmetega) turunduse, tootmise, meditsiini ja paljude teiste valdkondade alal. Et liituda ML Toolkit'i kasutajate grupiga, palun saatke lühike meil aadressile: MLToolkit@intersystems.com ja märkige oma kirjas järgmised andmed:

  • GitHubi kasutajanimi
  • Organisatsioon (koht, kus töötate või õpite)
  • Amet (teie tegelik amet teie organisatsioonis, või "Üliõpilane", või "Iseseisev").
  • Riik

Neile, kes on artikli läbi lugenud ja huvitatud InterSystems IRIS'i võimalustest kunstliku intellekti ja masinõppe mehhanismide arendamiseks või majutamiseks, pakume võimalust arutada teie ettevõttele huvi pakkuvaid stsenaariume. Oleme valmis analüüsima teie ettevõtte vajadusi ja ühiselt määrama tegevuskava; meie AI/ML ekspertgrupi kontaktmeiliaadress on MLToolkit@intersystems.com.

Allikas: habr.com

Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster