Python Gateway by InterSystems IRIS

Dit artikel giet oer Python Gateway, in iepen boarne mienskipsprojekt foar it InterSystems IRIS-gegevensplatfoarm. Dit projekt lit jo alle masine-learalgoritmen orkestrearje dy't makke binne yn Python (de wichtichste omjouwing foar in protte gegevenswittenskippers), brûk tal fan klearmakke bibleteken om fluch adaptive, robotyske analytyske AI / ML-oplossingen te meitsjen op it InterSystems IRIS-platfoarm. Yn dit artikel sil ik jo sjen litte hoe't InterSystems IRIS Python-prosessen kin orkestrearje, effisjinte twa-wei gegevensferfier útfiere en yntelliginte saaklike prosessen meitsje.

Plan

  1. Yntroduksje
  2. Tools.
  3. Ynstallaasje
  4. API.
  5. Ynteroperabiliteit.
  6. Jupyter Notebook.
  7. Konklúzjes.
  8. Links.
  9. M.L. Toolkit.

Ynlieding

Python is in programmeartaal op heech nivo, algemien doel rjochte op it ferbetterjen fan ûntwikkeldersproduktiviteit en koadelêsberens. Yn dizze searje artikels sil ik prate oer de mooglikheden fan it brûken fan de Python-taal op it InterSystems IRIS-platfoarm, wylst it haadfokus fan dit artikel it brûken fan Python is as taal foar it meitsjen en tapassen fan masine-learmodellen.

Masine learen (ML) is in klasse fan metoaden foar keunstmjittige yntelliginsje, wêrfan it karakteristike skaaimerk net de direkte oplossing fan in probleem is, mar learen yn it proses fan it oplossen fan in protte ferlykbere problemen.

Masine learen algoritmen en modellen wurde hieltyd faker. D'r binne in protte redenen foar dit, mar it komt allegear del op tagonklikens, ienfâld en it realisearjen fan praktyske resultaten. Is klustering of sels modeljen fan neuronale netwurken in nije technology?

Fansels net, mar tsjintwurdich is it net nedich om hûnderttûzenen rigels koade te skriuwen om ien model út te fieren, en de kosten foar it meitsjen en brûken fan modellen wurde lytser en lytser.

Tools ûntwikkelje - hoewol wy gjin folslein GUI-oriïntearre AI / ML-ark hawwe, wurdt de foarútgong dy't wy hawwe sjoen mei in protte oare klassen fan ynformaasjesystemen lykas BI (fan it skriuwen fan koade oant it brûken fan kaders en GUI-oriïntearre konfigurearbere oplossingen) ek sjoen. yn AI / ML skepping ark. Wy hawwe it poadium fan it skriuwen fan koade al trochjûn en hjoed brûke wy kaders foar it bouwen en oplieden fan modellen.

Oare ferbetteringen, lykas de mooglikheid om in pre-trained model te propagearjen wêr't de ein brûker it model gewoan moat opliede op har spesifike gegevens, meitsje it ek makliker om te begjinnen mei it tapassen fan masine learen. Dizze foarútgong makket it folle makliker om masine learen te learen, sawol foar professionals as foar bedriuwen as gehiel.

Oan de oare kant sammelje wy hieltyd mear gegevens. Mei in unifoarme gegevensplatfoarm lykas InterSystems IRIS, kin al dizze ynformaasje fuortendaliks wurde taret en brûkt as ynput foar masine-learmodellen.

Mei de oergong nei de wolk is it lansearjen fan AI / ML-projekten makliker dan ea. Wy kinne allinich de boarnen konsumearje dy't wy nedich binne. Boppedat, troch de parallelisaasje oanbean troch wolkplatfoarms, kinne wy ​​fergriemde tiid besparje.

Mar hoe sit it mei de resultaten? Dit is wêr't dingen yngewikkelder wurde. D'r binne in protte ark foar it bouwen fan modellen, dy't ik folgjende sil beprate. It bouwen fan in goed model is net maklik, mar wat dan? Profitearje fan it gebrûk fan it model troch in bedriuw is ek in net-triviale taak. De woartel fan it probleem is de skieding fan analytyske en transaksjeele wurklasten en gegevensmodellen. As wy in model traine, dogge wy it normaal op histoaryske gegevens. Mar it plak foar it konstruearre model is yn transaksjegegevensferwurking. Wat is it bêste model foar deteksje fan frauduleus transaksjes as wy it ien kear deis útfiere? De oplichters binne al lang mei it jild fuort. Wy moatte it model traine op histoaryske gegevens, mar wy moatte it ek yn echte tiid tapasse op nije ynkommende gegevens, sadat ús saaklike prosessen kinne hannelje neffens de foarsizzingen makke troch it model.

ML Toolkit is in toolkit dy't krekt dat docht: modellen byinoar bringe en in transaksjonele omjouwing sadat de modellen dy't jo bouwe kinne maklik direkt brûkt wurde yn jo saaklike prosessen. Python Gateway is diel fan 'e ML Toolkit en leveret yntegraasje mei de Python-taal (lykas R Gateway, diel fan' e ML Toolkit leveret yntegraasje mei de R-taal).

Toolkit

Foardat wy trochgean, wol ik in pear Python-ark en biblioteken beskriuwe dy't wy letter sille brûke.

fan technology

  • Python is in ynterpretearre, algemien-doel, heech nivo programmeartaal. It wichtichste foardiel fan 'e taal is in grutte bibleteek fan wiskundige, ML en AI bibleteken. Lykas ObjectScript is it in objekt-rjochte taal, mar alles is dynamysk definiearre, net statysk. Ek alles is in objekt. Lettere artikels geane út fan in foarbygaande bekendheid mei de taal. As jo ​​​​wolle begjinne te learen, advisearje ik te begjinnen mei dokumintaasje.
  • Foar ús folgjende oefeningen, set Python 3.6.7 64bit.
  • IDE: Ik brûk PyCharm, mar yn it algemien много. As jo ​​Atelier brûke, is d'r in Eclipse-plugin foar Python-ûntwikkelders. As jo ​​​​VS Code brûke, dan is d'r in útwreiding foar Python.
  • Notebook: Ynstee fan in IDE kinne jo jo skripts skriuwe en diele yn online notebooks. De populêrste fan harren is jupyter.

Biblioteken

Hjir is in (diele) list mei biblioteken foar masine-learen:

  • Nompich - in fûnemintele pakket foar eksakte berekkeningen.
  • pandas - gegevensstruktueren mei hege prestaasjes en ark foar gegevensanalyse.
  • matplotlib - Oanmeitsjen fan charts.
  • seaborn - gegevensfisualisaasje basearre op matplotlib.
  • Sklearn - metoaden foar masine learen.
  • XGBoost - Algoritmen foar masine-learen binnen de metodyk foar Gradient Boosting.
  • Gensim - NLP.
  • Keras - neurale netwurken.
  • Tensorstream is in platfoarm foar it meitsjen fan modellen foar masine learen.
  • PyTorch is in platfoarm foar it meitsjen fan masine-learmodellen rjochte op Python.
  • Nyoka - PMML fan ferskate modellen.

AI / ML-technologyen meitsje bedriuw effisjinter en oanpasber. Boppedat wurde dizze technologyen hjoeddedei makliker te ûntwikkeljen en te ymplementearjen. Begjin te learen oer AI / ML-technologyen en hoe't se jo organisaasje kinne helpe te groeien.

ynstelling

D'r binne ferskate manieren om Python Gateway te ynstallearjen en te brûken:

  • OS
    • Windows
    • linux
    • mac
  • Havenarbeider
    • Brûk de ôfbylding fan DockerHub
    • Meitsje jo eigen uterlik

Nettsjinsteande de ynstallaasjemetoade sille jo de boarnekoade nedich hawwe. It ienige plak om de koade te downloaden is releases side. It befettet testte stabile releases, pak gewoan de lêste. Op it stuit is it 0.8, mar nei ferrin fan tiid komme der nije. Kloon / download it repository net, download de lêste release.

OS

As jo ​​Python Gateway op in bestjoeringssysteem ynstallearje, dan moatte jo earst (nettsjinsteande it bestjoeringssysteem) Python ynstallearje. Foar dit:

  1. Ynstallearje Python 3.6.7 64 bit. It is oan te rieden om Python te ynstallearjen yn 'e standertmap.
  2. Ynstallearje de module dill: pip install dill.
  3. Download de ObjectScript-koade (d.w.s. do $system.OBJ.ImportDir("C:InterSystemsReposPythoniscpy", "*.cls", "c",,1)) nei elk gebiet mei produkten. As jo ​​​​wolle dat in besteand gebiet produkten stipet, rinne dan: write ##class(%EnsembleMgr).EnableNamespace($Namespace, 1).
  4. Plak callout DLL/SO/DYLIB oan map bin jo InterSystems IRIS-eksimplaar. De bibleteekbestân moat beskikber wêze yn it paad weromjûn troch write ##class(isc.py.Callout).GetLib().

Windows

  1. Soargje derfoar dat de omjouwingsfariabele is PYTHONHOME wiist op Python 3.6.7.
  2. Soargje derfoar dat it systeem omjouwingsfariabele is PATH befettet in fariabele PYTHONHOME (of de map dêr't it nei ferwiist).

Linux (Debian/Ubuntu)

  1. Kontrolearje oft de omjouwingsfariabele is PATH befettet /usr/lib и /usr/lib/x86_64-linux-gnu. Brûk Triem /etc/environment om omjouwingsfariabelen yn te stellen.
  2. Yn gefal fan flaters undefined symbol: _Py_TrueStruct set de ynstelling PythonLib... ek yn Readme der is in seksje foar Troubleshooting.

mac

  1. Op it stuit wurdt allinich python 3.6.7 stipe fan Python.org. Kontrolearje Variable PATH.

As jo ​​omjouwingsfariabelen hawwe feroare, start jo InterSystems-produkt op 'e nij.

Havenarbeider

It brûken fan konteners hat in oantal foardielen:

  • Portabiliteit
  • Effektiviteit
  • Isolaasje
  • ljochtheid
  • Unferoarlikens

Besjoch dit in rige artikels foar mear ynformaasje oer it brûken fan Docker mei InterSystems-produkten.

Alle Python Gateway builds binne op it stuit container basearre. 2019.4.

Foltôge ôfbylding

Run: docker run -d -p 52773:52773 --name irispy intersystemscommunity/irispy-community:latestom Python Gateway te downloaden en út te fieren mei InterSystems IRIS Community Edition. Da's alles.

Meitsje jo eigen uterlik

Om in dockerôfbylding te bouwen, rinne yn 'e root fan it repository: docker build --force-rm --tag intersystemscommunity/irispy:latest ..
Standert wurdt de ôfbylding boud op basis fan de ôfbylding store/intersystems/iris-community:2019.4.0.383.0, lykwols kinne jo dit feroarje troch de fariabele yn te stellen IMAGE.
Om te bouwen fan InterSystems IRIS útfiere: `docker build --build-arg IMAGE=store/intersystems/iris:2019.4.0.383.0 --force-rm --tag intersystemscommunity/irispy:latest'.

Dêrnei kinne jo de dockerôfbylding útfiere:

docker run -d 
  -p 52773:52773 
  -v /<HOST-DIR-WITH-iris.key>/:/mount 
  --name irispy 
  intersystemscommunity/irispy:latest 
  --key /mount/iris.key

As jo ​​​​in ôfbylding brûke basearre op InterSystems IRIS Community Edition, hoege jo gjin kaai op te jaan.

Comments

  • Testproses isc.py.test.Process bewarret in oantal ôfbyldings yn in tydlike map. Jo kinne dit paad wizigje nei in monteare map. Om dit te dwaan, bewurkje de ynstelling WorkingDir spesifisearje de monteard triemtafel.
  • Om tagong te krijen ta it terminal, rinne: docker exec -it irispy sh.
  • Tagong ta it System Management Portal troch oanmelde SuperUser/SYS.
  • Om in kontener te stopjen, rinne: docker stop irispy && docker rm --force irispy.

Kontrolearje de ynstallaasje

As jo ​​​​ienris Python Gateway ynstalleare hawwe, is it wurdich te kontrolearjen dat it wurket. Rinne dizze koade yn 'e InterSystems IRIS-terminal:

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

It resultaat moat wêze HELLO - de wearde fan de Python fariabele x. As it weromkommen status sc is in flater of var leech, kontrolearje Lês my - Seksje foar probleemoplossing.

API

Python Gateway is ynstalleare en jo hawwe ferifiearre dat it wurket. Tiid om it te brûken!
De wichtichste ynterface foar Python is isc.py.Main. It biedt de folgjende groepen metoaden (allegear werom %Status):

  • Koade útfiering
  • Data transfer
  • Helpferliening

Koade útfiering

Dizze metoaden kinne jo willekeurige Python-koade útfiere.

SimpleString

SimpleString is de wichtichste metoade. It nimt 4 opsjonele arguminten:

  • code is de rigel fan koade om út te fieren. Line feed karakter: $c(10).
  • returnVariable is de namme fan de fariabele om werom te jaan.
  • serialization - hoe te serialisearjen returnVariable. 0 - string (standert), 1 - repr.
  • result - ByRef ferwizing nei de fariabele wêryn de wearde is skreaun returnVariable.

Hjirboppe hawwe wy dien:

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

Yn dit foarbyld tawize wy oan in Python-fariabele x betsjutting Hello en wolle weromjaan de wearde fan in Python fariabele x nei in ObjectScript fariabele var.

Koade útfiere

ExecuteCode is in feiliger en minder beheinend alternatyf SimpleString.
Rigels yn it InterSystems IRIS-platfoarm binne beheind ta 3 tekens, en as jo in langer stik koade wolle útfiere, moatte jo streamen brûke.
It nimt twa arguminten:

  • code - in tekenrige of stream fan Python-koade dy't moat wurde útfierd.
  • variable - (opsjoneel) jout it resultaat fan útfiering code dizze Python fariabele.

Foarstelle om te brûken:

set sc = ##class(isc.py.Main).ExecuteCode("2*3", "y").

Yn dit foarbyld fermannichfâldigje wy 2 mei 3 en bewarje it resultaat yn in Python-fariabele y.

Data transfer

Gegevens trochjaan nei en fan Python.

Python -> InterSystems IRIS

D'r binne 4 manieren om de wearde fan in Python-fariabele te krijen yn InterSystems IRIS, ôfhinklik fan de serialisaasje dy't jo nedich binne:

  • String foar ienfâldige gegevenstypen en debuggen.
  • Repr foar it bewarjen fan ienfâldige objekten en debuggen.
  • JSON foar maklike gegevensmanipulaasje oan 'e InterSystems IRIS-kant.
  • Pickle om objekten te bewarjen.

Dizze metoaden kinne jo fariabelen fan Python ûntfange as in tekenrige of as streamen.

  • GetVariable(variable, serialization, .stream, useString) - krije serialization fariabele variable в stream. As useString is 1 en de serialisaasje wurdt pleatst yn in tekenrige, dan wurdt in tekenrige weromjûn, net in stream.
  • GetVariableJson(variable, .stream, useString) - krije JSON-serialisaasje fan in fariabele.
  • GetVariablePickle(variable, .stream, useString, useDill) -Get a Pickle (of Dill) serialization fan in fariabele.

Litte wy besykje ús fariabele te krijen y.

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

InterSystems IRIS -> Python

Laden fan gegevens fan InterSystems IRIS yn Python.

  • ExecuteQuery(query, variable, type, namespace) - makket in dataset (pandas dataframe of list) fan sql-query en set it op python-fariabele variable. Plestik tas isc.py moat beskikber wêze yn it gebiet namespace - it fersyk sil dêr útfierd wurde.
  • ExecuteGlobal(global, variable, type, start, end, mask, labels, namespace) - laadt globale gegevens global út subskript start до end yn Python as type fariabele type: list, of panda's dataframe. Beskriuwing fan opsjonele arguminten mask en labels beskikber yn klasse dokumintaasje en repository Data Transfer docs.
  • ExecuteClass(class, variable, type, start, end, properties, namespace) - laadt klasse gegevens class fan id start до end yn Python as type fariabele type: list, of panda's dataframe. properties - list (skieden troch komma) fan klasse eigenskippen dy't wurde laden yn de dataset. Maskers stipe * и ?. Standert - * (alle eigenskippen). Besit %%CLASSNAME negearre.
  • ExecuteTable(table, variable, type, start, end, properties, namespace) - laden tabel gegevens table fan id start до end yn pyton.

ExecuteQuery - universele (elke jildige SQL-query sil wurde trochjûn oan Python). Lykwols, ExecuteGlobal en syn wraps ExecuteClass и ExecuteTable wurkje mei in oantal beheinings. Se binne folle flugger (3-5 kear flugger as de ODBC-bestjoerder en 20 kear flugger as ExecuteQuery). Mear ynformaasje yn Data Transfer docs.
Al dizze metoaden stypje de oerdracht fan gegevens fan elk gebiet. Plestik tas isc.py moat beskikber wêze yn it doelgebiet.

ExecuteQuery

ExecuteQuery(request, variable, type, namespace) - de resultaten fan elke jildige SQL-query trochjaan oan Python. Dit is de stadichste metoade foar oerdracht fan gegevens. Brûk it as ExecuteGlobal en syn wrappers binne net beskikber.

Arguminten:

  • query - sql query.
  • variable - de namme fan de Python-fariabele wêryn de gegevens skreaun binne.
  • type - list of panda's dataframe.
  • namespace - it gebiet dêr't it fersyk sil wurde útfierd.

ExecuteGlobal

ExecuteGlobal(global, variable, type, start, end, mask, labelels, namespace) - trochjaan fan in globale oan Python.

Arguminten:

  • global is de namme fan de globale sûnder ^
  • variable - de namme fan de Python-fariabele wêryn de gegevens skreaun binne.
  • type - list of panda's dataframe.
  • start - it earste abonnemint fan 'e globale. Needsaaklik %Integer.
  • end is it lêste abonnemint fan 'e globale. Needsaaklik %Integer.
  • mask - masker fan globale wearden. It masker kin koarter wêze as it oantal fjilden yn 'e globale (yn dat gefal wurde de fjilden oan' e ein oerslein). Hoe it masker opmaak:
    • + pass de wearde lykas is.
    • - skip wearde.
    • b - Boolean type (0 - False, al de rest - True).
    • d - Datum (fan $horolog, op Windows út 1970, op Linux fanôf 1900).
    • t - Tiid ($ horolog, sekonden nei middernacht).
    • m - Tiidstempel (YEAR-MONTH-DAY HOUR: MINUTE: TWEEDE opmaakstring).
  • labels - % List fan kolomnammen. It earste elemint is de namme fan it subskript.
  • namespace - it gebiet dêr't it fersyk sil wurde útfierd.

ExecuteClass

wrap oer ExecuteGlobal. Bereidt in oprop basearre op de klasse definysje ExecuteGlobal en ropt him.

ExecuteClass(class, variable, type, start, end, properties, namespace) - trochjaan klasse gegevens oan Python.

Arguminten:

  • class - klasse namme
  • variable - de namme fan de Python-fariabele wêryn de gegevens skreaun binne.
  • type - list of panda's dataframe.
  • start - begjin Id.
  • end - Finale Id
  • properties - list (skieden troch komma) fan klasse eigenskippen dy't wurde laden yn de dataset. Maskers stipe * и ?. Standert - * (alle eigenskippen). Besit %%CLASSNAME negearre.
  • namespace - it gebiet dêr't it fersyk sil wurde útfierd.

Alle eigenskippen wurde trochjûn lykas is útsein type eigenskippen %Date, %Time, %Boolean и %TimeStamp - se wurde omboud ta de oerienkommende Python-klassen.

Tabel útfiere

wrap oer ExecuteClass. Fertaalt de tabelnamme yn in klassenamme en ropt ExecuteClass. Hantekening:

ExecuteTable(table, variable, type, start, end, properties, namespace) - tabelgegevens trochjaan oan Python.

Arguminten:

  • table - tabel namme.
    Alle oare arguminten wurde trochjûn lykas is. ExecuteClass.

Notysjes

  • ExecuteGlobal, ExecuteClass и ExecuteTable wurkje like fluch.
  • ExecuteGlobal 20 kear flugger as ExecuteQuery op grutte datasets (oerdracht tiid> 0.01 sekonde).
  • ExecuteGlobal, ExecuteClass и ExecuteTable wurkje oan globalen mei dizze struktuer: ^global(key) = $lb(prop1, prop2, ..., propN) wêr key is in hiel getal.
  • foar ExecuteGlobal, ExecuteClass и ExecuteTable stipe wearde berik %Date komt oerien mei it berik mktime en hinget ôf fan it OSfinsters: 1970-01-01, linux 1900-01-01, mac). Brûke %TimeStampom gegevens bûten dit berik troch te jaan of pandas dataframe te brûken as dizze beheining is allinnich foar de list.
  • foar ExecuteGlobal, ExecuteClass и ExecuteTable alle arguminten útsein gegevensboarne (globaal, klasse of tabel) en fariabele binne opsjoneel.

foarbylden

test klasse isc.py.test.Person befettet in metoade dy't alle opsjes foar gegevensoerdracht toant:

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)

call metoade do ##class(isc.py.test.Person).Test() om te sjen hoe't alle metoaden foar gegevensferfier wurkje.

Helper Metoaden

  • GetVariableInfo(variable, serialization, .defined, .type, .length) - krije ynformaasje oer de fariabele: oft it is definiearre, klasse en serialization lingte.
  • GetVariableDefined(variable, .defined) - oft de fariabele is definiearre.
  • GetVariableType(variable, .type) - krije de klasse fan de fariabele.
  • GetStatus() - krije en fuortsmite de lêste útsûndering oan de Python kant.
  • GetModuleInfo(module, .imported, .alias) - krije module fariabele en ymportearje status.
  • GetFunctionInfo(function, .defined, .type, .docs, .signature, .arguments) - krije ynformaasje oer de funksje.

Ynteroperabiliteit

Jo hawwe leard hoe't jo Python Gateway kinne skilje fanút it terminal, litte wy it no begjinne te brûken yn produksje. De basis foar ynteraksje mei Python yn dizze modus is isc.py.ens.Operation. It lit ús:

  • Python-koade útfiere
  • Python-kontekst opslaan / weromsette
  • Laad en ûntfange gegevens fan Python

Yn prinsipe is in Pyhton-operaasje in wrapper oer isc.py.Main. Operaasje isc.py.ens.Operation lit ynteraksje mei it Python-proses fan InterSystems IRIS-produkten. Fiif oanfragen wurde stipe:

  • isc.py.msg.ExecutionRequest om Python-koade út te fieren. jout werom isc.py.msg.ExecutionResponse mei it útfieringsresultaat en de wearden fan 'e frege fariabelen.
  • isc.py.msg.StreamExecutionRequest om Python-koade út te fieren. jout werom isc.py.msg.StreamExecutionResponse it resultaat fan útfiering en de wearden fan 'e frege fariabelen. Analog isc.py.msg.ExecutionRequest, mar akseptearret en jout streamen yn stee fan snaren.
  • isc.py.msg.QueryRequest om it resultaat fan it útfieren fan in SQL-query oer te dragen. jout werom Ens.Response.
  • isc.py.msg.GlobalRequest/isc.py.msg.ClassRequest/isc.py.msg.TableRequest om globale / klasse / tabel gegevens troch te jaan. jout werom Ens.Response.
  • isc.py.msg.SaveRequest om Python-kontekst te bewarjen. jout werom Ens.StringResponse mei kontekst ID.
  • isc.py.msg.RestoreRequest om de Python-kontekst te herstellen.

    Dêrnjonken, isc.py.ens.Operation hat twa ynstellings:

    • Initializer - in klasse kieze dy't de ynterface ymplementearret isc.py.init.Abstract. It kin brûkt wurde om funksjes, modules, klassen en sa te laden. It wurdt ien kear útfierd as it proses begjint.
    • PythonLib - (allinich Linux) as jo bootflaters sjogge, set de wearde yn op libpython3.6m.so of sels yn it folsleine paad nei de Python-bibleteek.

Skepping fan saaklike prosessen

D'r binne twa klassen beskikber dy't de ûntwikkeling fan saaklike prosessen fasilitearje:

  • isc.py.ens.ProcessUtils lit jo annotaasjes ekstrahearje fan aktiviteiten mei fariabele ferfanging.
  • isc.py.util.BPEmulator makket it maklik om te testen saaklike prosessen mei Python. It kin in saaklik proses (Python-dielen) útfiere yn it hjoeddeistige proses.

Fariabele ferfanging

Alle saaklike prosessen erfde út isc.py.ens.ProcessUtils, kin de metoade brûke GetAnnotation(name) om de wearde fan in aktiviteitannotaasje op syn namme te krijen. De aktiviteitannotaasje kin fariabelen befetsje dy't sille wurde evaluearre oan 'e InterSystems IRIS-kant foardat se trochjûn wurde oan Python. Hjir is de syntaksis foar fariabele ferfanging:

  • ${class:method:arg1:...:argN} - metoade oprop
  • #{expr} - koade útfiere yn 'e ObjectScript-taal.

In foarbyld is te krijen yn it testbedriuwproses isc.py.test.Process, bygelyks, yn aktiviteit Correlation Matrix: Graph: f.savefig(r'#{process.WorkDirectory}SHOWCASE${%PopulateUtils:Integer:1:100}.png'). Yn dit foarbyld:

  • #{process.WorkDirectory} jout de WorkDirectory-eigenskip fan it objekt werom process, dat is in eksimplaar fan 'e klasse isc.py.test.Process dy. hjoeddeistige saaklike proses.
  • ${%PopulateUtils:Integer:1:100} neamt in metoade Integer klasse %PopulateUtils, passing arguminten 1 и 100, in willekeurige hiel getal werom yn it berik 1...100.

Test saaklike proses

De testproduksje en testbedriuwproses binne standert beskikber as ûnderdiel fan 'e Python Gateway. Om se te brûken:

  1. Yn OS terminal útfiere: pip install pandas matplotlib seaborn.
  2. Yn it InterSystems IRIS-terminal, rinne: do ##class(isc.py.test.CannibalizationData).Import() testgegevens ynfolje.
  3. Launch produkten isc.py.test.Production.
  4. Stjoer fersyk type Ens.Request в isc.py.test.Process.

Litte wy sjen hoe't it allegear wurket. Iepen isc.py.test.Process yn de BPL-bewurker:

Python Gateway by InterSystems IRIS

Koade útfiering

De wichtichste oprop is de útfiering fan Python-koade:

Python Gateway by InterSystems IRIS

Fersyk brûkt isc.py.msg.ExecutionRequest, hjir binne syn eigenskippen:

  • Code - Python-koade.
  • SeparateLines - of de koade te splitsen yn rigels foar útfiering. $c(10) (n) wurdt brûkt om snaren te skieden. Tink derom dat it NET oan te rieden is om it hiele berjocht tagelyk te ferwurkjen, dizze funksje is allinich foar ferwurking def en ferlykbere multiline útdrukkingen. Standert 0.
  • Variables is in komma-skieden list fan fariabelen dy't sille wurde tafoege oan it antwurd.
  • Serialization - Hoe serialisearje de fariabelen wy wolle werom. Opsjes: Str, Repr, JSON, Pickle и Dill, standert Str.

Yn ús gefal sette wy allinich it pân yn Code, sadat alle oare eigenskippen har standertwearden brûke. Wy sette it op troch te skiljen process.GetAnnotation("Import pandas"), dy't by runtime in annotaasje weromjout neidat fariabele ferfanging is útfierd. Ta beslút de koade import pandas as pd sil trochjûn wurde oan Python. GetAnnotation kin nuttich wêze foar it krijen fan multi-line Python-skripts, mar d'r binne gjin beheiningen op dizze manier om koade te krijen. Jo kinne it eigendom ynstelle Code op elke manier handich foar jo.

Getting fariabelen

In oare nijsgjirrige útdaging mei help isc.py.msg.ExecutionRequest - Correlation Matrix: Tabular:

Python Gateway by InterSystems IRIS

It berekkent de korrelaasjematrix oan 'e Python-kant en ekstrakt de fariabele corrmat werom nei InterSystems IRIS yn JSON-formaat troch de fersykeigenskippen yn te stellen:

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

Wy kinne de resultaten sjen yn Visual Trace:

Python Gateway by InterSystems IRIS

En as wy dizze wearde nedich hawwe yn 'e BP, kin it sa krije: callresponse.Variables.GetAt("corrmat").

Data transfer

Litte wy dêrnei prate oer it oerdragen fan gegevens fan InterSystems IRIS nei Python, alle oanfragen foar gegevensferfier ymplementearje de ynterface isc.py.msg.DataRequest, dy't de folgjende eigenskippen leveret:

  • Variable is in Python fariabele dêr't de gegevens wurdt skreaun.
  • Type - fariabele type: dataframe (pandas dataframe) of list.
  • Namespace - it gebiet wêrfan wy gegevens ûntfange. Plestik tas isc.py moat beskikber wêze yn dit gebiet. Dit kin in gebiet wêze sûnder produktstipe.

Op grûn fan dizze ynterface wurde 4 klassen oanfragen ymplementearre:

  • isc.py.msg.QueryRequest - ynstelle eigendom Query om in SQL-fraach te stjoeren.
  • isc.py.msg.ClassRequest - ynstelle eigendom Class klasse gegevens trochjaan.
  • isc.py.msg.TableRequest - ynstelle eigendom Table om tabelgegevens troch te jaan.
  • isc.py.msg.GlobalRequest - ynstelle eigendom Global om gegevens wrâldwiid oer te dragen.

Sjoch yn it testproses nei de aktiviteit RAWwêr isc.py.msg.QueryRequest werjûn yn aksje.

Python Gateway by InterSystems IRIS

In Python-kontekst opslaan / weromsette

Uteinlik kinne wy ​​​​de Python-kontekst opslaan yn InterSystems IRIS, om dit te dwaan, stjoere isc.py.msg.SaveRequest mei arguminten:

  • Mask - Allinich fariabelen dy't foldogge oan it masker wurde bewarre. Stipe * и ?... Foarbyld: "Data*, Figure?"... Standert *.
  • MaxLength - De maksimale lingte fan de opsleine fariabele. As de serialisaasje fan in fariabele langer is, dan sil it wurde negearre. Stel op 0 om fariabelen fan elke lingte te krijen. Standert $$$MaxStringLength.
  • Name - Kontekstnamme (opsjoneel).
  • Description - Beskriuwing fan 'e kontekst (opsjoneel).

Returns Ens.StringResponse с Id bewarre kontekst. Sjoch yn it testproses nei de aktiviteit Save Context.

Related fersyk isc.py.msg.RestoreRequest laadt in kontekst fan InterSystems IRIS yn Python:

  • ContextId is de kontekst identifier.
  • Clear - wiskje de kontekst foardat jo weromsette.

Jupyter Notebook

Jupyter Notebook is in iepen boarne webapplikaasje wêrmei jo notebooks kinne meitsje en publisearje mei koade, fisualisaasjes en tekst. Python Gateway lit jo BPL-prosessen besjen en bewurkje as in Jupyter Notebook. Tink derom dat de reguliere Python 3 útfierer op it stuit wurdt brûkt.

Dizze tafoeging giet derfan út dat annotaasjes Python-koade befetsje en aktiviteitsnammen brûke as foarôfgeande titels. It is no mooglik om PythonGateway-saaklike prosessen te ûntwikkeljen yn Jupyter Notebook. Hjir is wat mooglik is:

  • Meitsje nije saaklike prosessen
  • Wiskje saaklike prosessen
  • Meitsje nije aktiviteiten
  • Feroarje aktiviteiten
  • Wiskje aktiviteiten

hjir demo fideo. En wat skermôfbyldings:

Proses Explorer

Python Gateway by InterSystems IRIS

Proses bewurker

Python Gateway by InterSystems IRIS

ynstelling

  1. Jo sille InterSystems IRIS 2019.2+ nedich hawwe.
  2. Ynstallearje PythonGateway v0.8+ (fereasket allinich isc.py.util.Jupyter, isc.py.util.JupyterCheckpoints и isc.py.ens.ProcessUtils).
  3. Update de ObjectScript-koade fan it repository.
  4. Eksekutearje do ##class(isc.py.util.Jupyter).Install() en folgje de prompts.

Dokumintaasje.

befinings

MLToolkit is in set ark dy't as doel hat om modellen en in transaksjonele omjouwing te kombinearjen, sadat de boude modellen maklik direkt yn jo saaklike prosessen kinne wurde brûkt. Python Gateway makket diel út fan MLToolkit en leveret yntegraasje mei de Python-taal, wêrtroch jo alle masine-learalgoritmen kinne orkestrearje makke yn Python (de haadomjouwing foar in protte Data Scientists), in protte klearmakke biblioteken brûke om fluch adaptive, robotyske analytyske AI te meitsjen / ML-oplossingen op it InterSystems-platfoarm IRIS.

referinsjes

MLToolkit

De MLToolkit-brûkersgroep is in privee GitHub-repository makke as ûnderdiel fan 'e InterSystems Corporate GitHub-organisaasje. It is rjochte oan eksterne brûkers dy't MLToolkit-komponinten ynstallearje, leare of al brûke, ynklusyf Python Gateway. De groep hat in oantal ymplementearre gefallen (mei boarnekoade en testgegevens) op it mêd fan marketing, produksje, medisinen en in protte oare yndustry. Om mei te dwaan oan 'e ML Toolkit-brûkersgroep, stjoer asjebleaft in koarte e-post nei it folgjende adres: [e-post beskerme] en befetsje de folgjende ynformaasje yn jo brief:

  • GitHub brûkersnamme
  • Organisaasje (jo wurkje of studearje)
  • Posysje (jo werklike posysje yn jo organisaasje, itsij "Studint" of "Unôfhinklik").
  • lân

Foar dyjingen dy't it artikel hawwe lêzen en ynteressearre binne yn InterSystems IRIS as in platfoarm foar it ûntwikkeljen of hostjen fan keunstmjittige yntelliginsje en masine-learenmeganismen, noegje wy jo út om mooglike senario's fan belang foar jo bedriuw te besprekken. Wy sille de behoeften fan jo bedriuw maklik analysearje en tegearre in aksjeplan bepale; kontakt e-postadres fan ús AI / ML ekspertgroep - [e-post beskerme].

Boarne: www.habr.com

Add a comment