Python Gateway InterSystems IRIS-en

Artikulu hau Python Gateway-i buruzkoa da, InterSystems IRIS datu-plataformarako kode irekiko komunitateko proiektu bati buruz. Proiektu honek Python-en (Datu Zientzialari askoren ingurune nagusia) sortutako makina ikasteko algoritmoak orkestratzeko aukera ematen du, prest egindako liburutegi ugari erabiltzea AI / ML analitiko moldagarriak eta robotikoen irtenbideak azkar sortzeko InterSystems IRIS plataforman. Artikulu honetan, InterSystems IRIS-ek Python-en prozesuak orkestra ditzakeen, bi norabideko datuak modu eraginkorrean komunikatu eta negozio-prozesu adimentsuak sor ditzakeen erakutsiko dut.

plan

  1. Sarrera
  2. Tresnak.
  3. Instalazio.
  4. API.
  5. Elkarreragingarritasuna.
  6. Jupyter Koadernoa.
  7. Ondorioak.
  8. Estekak.
  9. MLToolkit.

Sarrera

Python maila handiko eta helburu orokorreko programazio-lengoaia da, garatzaileen produktibitatea eta kodea irakurgarritasuna hobetzera zuzenduta. Artikulu sorta honetan, InterSystems IRIS plataforman Python erabiltzeko aukerak aztertuko ditut, artikulu honen ardatz nagusia Python-en erabilera makina-ikasketa-ereduak sortzeko eta exekutatzeko hizkuntza gisa erabiltzea delarik.

Machine learning (ML) adimen artifizialeko metodoen klase bat da, zeinaren ezaugarria ez da arazo baten zuzeneko konponbidea, antzeko problema asko ebazteko prozesuan ikastea baizik.

Ikaskuntza automatikoko algoritmoak eta ereduak gero eta ohikoagoak dira. Arrazoi asko daude horretarako, baina dena irisgarritasunari, sinpletasunari eta emaitza praktikoak lortzeari dagokio. Clustering edo sare neuronalaren modelizazioa teknologia berria al da?

Noski ezetz, baina gaur egun ez dago ehunka mila kode lerro idatzi behar eredu bakarra exekutatzeko, eta ereduak sortu eta erabiltzearen kostua gero eta txikiagoa da.

Tresnak eboluzionatzen ari dira - GUI-n oinarritutako AI/ML tresnak ez ditugun arren, beste informazio-sistem klase askorekin ikusi dugun aurrerapena, hala nola, BIarekin (kodea idaztetik markoak eta GUI-en oinarritutako konponbide konfiguragarriak erabiltzera) da. AI/ML sortzeko tresnetan ere ikusi da. Kodea idazteko etapa gainditu dugu dagoeneko eta gaur egun ereduak eraiki eta trebatzeko frameworkak erabiltzen ditugu.

Beste hobekuntza batzuek, hala nola, aurrez prestatutako eredu bat banatzeko gaitasuna, non azken erabiltzaileak eredua bere datu zehatzetan trebatzea besterik ez duen besterik gabe, errazagoa da ikaskuntza automatikoan hastea. Aurrerapen horiei esker, ikaskuntza automatikoa askoz errazagoa da profesionalentzat zein enpresentzat, oro har.

Bestalde, gero eta datu gehiago biltzen ari gara. InterSystems IRIS bezalako datu-plataforma bateratu batekin, informazio hori guztia berehala prestatu daiteke eta ikasketa automatikoko ereduetarako sarrera gisa erabil daiteke.

Hodeira igarotzean, AI/ML proiektuak abian jartzea inoiz baino errazagoa da. Behar ditugun baliabideak baino ezin ditugu kontsumitu. Gainera, hodeiko plataformek eskaintzen duten paralelismoari esker, denbora aurreztu dezakegu.

Baina zer gertatzen da emaitzekin? Hor konplikatzen dira gauzak. Ereduak eraikitzeko tresna asko daude, eta hurrengoan eztabaidatuko ditudanak. Eredu on bat eraikitzea ez da erraza, baina gero zer? Negozio-eredu bat erabiliz irabaziak ateratzea ere ez da hutsala. Arazoaren oinarria lan-karga analitikoak eta transakzionalak eta datu-ereduak bereiztea da. Eredu bat entrenatzen dugunean, datu historikoetan egiten dugu normalean. Baina eraikitako ereduaren lekua datu transakzionalen tratamenduan dago. Zertarako balio du iruzurrezko transakzioak hautemateko eredurik onena egunean behin exekutatzen badugu? Iruzurgileek aspaldi utzi zuten diruarekin. Eredua datu historikoetan trebatu behar dugu, baina denbora errealean ere aplikatu behar dugu sarrerako datu berrietan, gure negozio-prozesuek ereduak egindako iragarpenetan jarduteko.

ML Toolkit hori egiteko helburua duen tresna multzo bat da: ereduak eta transakzio-ingurune bat bateratzea, eraikitako ereduak zure negozio-prozesuetan zuzenean erabil ditzaten. Python Gateway ML Toolkit-aren parte da eta Python lengoaiarekin integrazioa eskaintzen du (R Gateway-k, ML Toolkit-aren parte izateak R hizkuntzarekin integrazioa ematen duen antzera).

tresnak

Jarraitu aurretik, geroago erabiliko ditugun Python tresna eta liburutegi batzuk deskribatu nahiko nituzke.

Teknologia

  • Python, maila altuko eta helburu orokorreko programazio lengoaia interpretatua da. Hizkuntzaren abantaila nagusia matematika, ML eta AI liburutegien liburutegi handia da. ObjectScript bezala, objektuetara zuzendutako lengoaia da, baina dena dinamikoki definitzen da, estatikoki baino ez. Gainera, dena objektu bat da. Geroago artikuluek hizkuntzaren familiartasun iragankorra suposatzen dute. Ikasten hasi nahi baduzu, honekin hastea gomendatzen dizut dokumentazioa.
  • Gure ondorengo ariketetarako, ezarri Python 3.6.7 64 bit.
  • IDE: Nik erabiltzen dut PyCharm, baina orokorrean haiek много. Atelier erabiltzen baduzu, Python garatzaileentzako Eclipse plugin bat dago. VS Code erabiltzen ari bazara, Pythonentzako luzapen bat dago.
  • Koadernoa: IDE baten ordez, zure gidoiak idatzi eta parteka ditzakezu lineako koadernoetan. Horien artean ezagunena da jupiter.

Liburutegiak

Hona hemen ikaskuntza automatikoko liburutegien zerrenda (ez zehatza):

  • Gaiztoa — kalkulu zehatzak egiteko oinarrizko paketea.
  • pandas — errendimendu handiko datuen egiturak eta datuak aztertzeko tresnak.
  • matplotlib — grafikoak sortzea.
  • Itsasoa — Matplotlib-en oinarritutako datuen bistaratzea.
  • Sklearn — Ikaskuntza automatikoko metodoak.
  • XGBoost — ikaskuntza automatikoko algoritmoak gradienteak sustatzeko metodologiaren esparruan.
  • Gensim - PNL.
  • Keras - Sare neuronalak.
  • Tentsorflow — ikaskuntza automatikoko ereduak sortzeko plataforma.
  • PyTorch ikaskuntza automatikoko ereduak sortzeko plataforma bat da, Python-era bideratuta.
  • Nyoka - Hainbat eredutako PMML.

AI/ML teknologiek negozioa eraginkorragoa eta moldagarriagoa bihurtzen dute. Gainera, gaur egun teknologia hauek garatzen eta inplementatzen errazagoak dira. Hasi AI/ML teknologiei buruz eta zure erakundea hazten nola lagundu dezaketen ikasten.

Instalazio-

Python Gateway instalatzeko eta erabiltzeko hainbat modu daude:

  • Sistema eragile
    • Windows
    • Linux
    • Mac
  • Docker
    • Erabili DockerHub-eko irudi bat
    • Sortu zure itxura

Instalazio-metodoa edozein dela ere, iturburu kodea beharko duzu. Kodea deskargatzeko leku bakarra da kaleratze orria. Probatutako bertsio egonkorrak ditu, hartu azkena. Momentuz 0.8koa da, baina denborarekin berriak izango dira. Ez klonatu/deskargatu biltegia, deskargatu azken bertsioa.

Sistema eragile

Python Gateway sistema eragile batean instalatzen ari bazara, lehenik (sistema eragilea edozein dela ere) Python instalatu behar duzu. Honetarako:

  1. Instalatu Python 3.6.7 64 bit. Python direktorio lehenetsian instalatzea gomendatzen da.
  2. Instalatu modulua dill: pip install dill.
  3. Deskargatu ObjectScript kodea (hau da. do $system.OBJ.ImportDir("C:InterSystemsReposPythoniscpy", "*.cls", "c",,1)) produktuak dituen edozein eremura. Lehendik dagoen eremu bat produktuak laguntzeko, exekutatu: write ##class(%EnsembleMgr).EnableNamespace($Namespace, 1).
  4. Lekua deialdia DLL/SO/DYLIB karpetara bin zure InterSystems IRIS instantzia. Liburutegiko fitxategia eskuragarri egon behar da itzuli den bidean write ##class(isc.py.Callout).GetLib().

Windows

  1. Ziurtatu ingurune-aldagaia PYTHONHOME Python 3.6.7 seinalatzen du.
  2. Ziurtatu sistemaren ingurune-aldagaia dagoela PATH aldagai bat dauka PYTHONHOME (edo seinalatzen duen direktorioa).

Linux (Debian/Ubuntu)

  1. Egiaztatu ingurune-aldagaia dagoela PATH dauka /usr/lib и /usr/lib/x86_64-linux-gnu. Erabili fitxategia /etc/environment ingurune-aldagaiak ezartzeko.
  2. Akatsen kasuan undefined symbol: _Py_TrueStruct ezarri ezarpena PythonLib. barruan ere readme Arazoak konpontzeko atala dago.

Mac

  1. Gaur egun Python 3.6.7 bakarrik onartzen da python.org. Egiaztatu aldagaia PATH.

Inguruko aldagaiak aldatu badituzu, berrabiarazi InterSystems produktua.

Docker

Ontziak erabiltzeak abantaila ugari ditu:

  • Eramangarritasuna
  • eraginkortasuna
  • Isolamendua
  • Arintasuna
  • Aldaezintasuna

Begiratu hau artikulu sorta Docker InterSystems produktuekin erabiltzeari buruzko informazio gehiago lortzeko.

Gaur egun, Python Gateway-ren eraikuntza guztiak edukiontzietan oinarritzen dira 2019.4.

Irudia prest

Korrika egin: docker run -d -p 52773:52773 --name irispy intersystemscommunity/irispy-community:latestPython Gateway deskargatzeko eta exekutatzeko InterSystems IRIS Community Edition-rekin. Hori da dena.

Sortu zure itxura

Docker irudi bat eraikitzeko, exekutatu biltegiaren erroan: docker build --force-rm --tag intersystemscommunity/irispy:latest ..
Lehenespenez, irudia irudian oinarrituta eraikitzen da store/intersystems/iris-community:2019.4.0.383.0, hala ere, aldagai bat ezarriz alda dezakezu IMAGE.
InterSystems IRISetik eraikitzeko, exekutatu: `docker build --build-arg IMAGE=store/intersystems/iris:2019.4.0.383.0 --force-rm --tag intersystemscommunity/irispy:latest ".

Honen ondoren docker irudia exekutatu dezakezu:

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-n oinarritutako irudi bat erabiltzen ari bazara, gakoa bazter dezakezu.

Comments

  • Proba prozesua isc.py.test.Process irudi batzuk aldi baterako direktorio batean gordetzen ditu. Baliteke bide hau muntatutako direktoriora aldatu nahi izatea. Horretarako, editatu ezarpena WorkingDir muntatutako direktorioa zehaztuz.
  • Terminalera sartzeko: docker exec -it irispy sh.
  • Sistema Kudeatzeko Atarira sarbidea saioa hasita SuperUser/SYS.
  • Ontzia gelditzeko, exekutatu: docker stop irispy && docker rm --force irispy.

Instalazioa egiaztatzea

Python Gateway instalatu ondoren, merezi du egiaztatzea funtzionatzen duela. Exekutatu kode hau InterSystems IRIS terminalean:

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

Emaitza izan beharko litzateke: HELLO — Python aldagaiaren balioa x. Itzultzeko egoera bada sc errore bat da edo var hutsik, egiaztatu Readme - Arazoak konpontzeko atala.

API

Python Gateway instalatuta dago eta funtzionatzen duela egiaztatu duzu. Erabiltzen hasteko ordua da!
Python-en interfaze nagusia da isc.py.Main. Metodo talde hauek eskaintzen ditu (guztiak bueltan %Status):

  • Kode Exekuzioa
  • Datuen transferentzia
  • Filiala

Kode Exekuzioa

Metodo hauek Python kode arbitrarioa exekutatzeko aukera ematen dute.

SimpleString

SimpleString - Hau da metodo nagusia. Aukerako 4 argumentu hartzen ditu:

  • code — Exekutatu beharreko kode-lerroa. Lerro-jarrera karakterea: $c(10).
  • returnVariable — Itzuli beharreko aldagaiaren izena.
  • serialization - nola serializatu returnVariable. 0 — katea (lehenetsia), 1 — repr.
  • result — ByRef erreferentzia balioa idazten den aldagaiari returnVariable.

Goian egin genuen:

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

Adibide honetan, Python aldagai bati esleitzen diogu x balioa Hello eta Python aldagai baten balioa itzuli nahi du x ObjectScript aldagai batera var.

ExekutatuKodea

ExecuteCode alternatiba seguruagoa eta ez hain murriztailea da SimpleString.
InterSystems IRIS plataformako lerroak 3 karaktere ditu, eta kode luzeago bat exekutatu nahi baduzu, hariak erabili behar dituzu.
Bi argudio onartzen dira:

  • code — Exekutatu beharreko Python kodearen lerroa edo korrontea.
  • variable — (aukerakoa) exekuzioaren emaitza esleitzen du code Python aldagai hau.

Erabili beharreko adibidea:

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

Adibide honetan, 2z 3 biderkatu eta emaitza idatziko dugu Python aldagai batean y.

Datuen transferentzia

Pasatu datuak Python-era eta honetatik.

Python -> InterSystems IRIS

InterSystems IRIS-en Python aldagai baten balioa lortzeko 4 modu daude, behar duzun serializazioaren arabera:

  • String datu mota errazetarako eta arazketarako.
  • Repr objektu sinpleak gordetzeko eta arazketarako.
  • JSON InterSystems IRIS aldean datuak erraz manipulatzeko.
  • Pickle objektuak gordetzeko.

Metodo hauek Python-etik aldagaiak kate edo korronte gisa berreskura ditzakezu.

  • GetVariable(variable, serialization, .stream, useString) - lortu serialization aldakorra variable в stream. bada useString 1 da eta serializazioa kate batean jartzen da, gero kate bat itzultzen da eta ez korronte bat.
  • GetVariableJson(variable, .stream, useString) — lortu aldagai baten JSON serializazioa.
  • GetVariablePickle(variable, .stream, useString, useDill) -lortu Pickle (edo Dill) aldagai baten serializazioa.

Saia gaitezen gure aldagaia lortzen y.

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

InterSystems IRIS -> Python

InterSystems IRIS-en datuak Python-en kargatzen.

  • ExecuteQuery(query, variable, type, namespace) - datu multzo bat sortzen du (pandas dataframe edo list) sql kontsultatik eta Python aldagai batean ezartzen du variable. Plastikozko poltsa isc.py eremuan eskuragarri egon behar da namespace — eskaera bertan beteko da.
  • ExecuteGlobal(global, variable, type, start, end, mask, labels, namespace) - Datu globalak kargatzen ditu global azpiindizetik start to end Python-en mota aldagai gisa type: list, edo pandak dataframe. Aukerako argumentuen deskribapena mask labels klaseko dokumentazioan eta biltegian eskuragarri Datuak transferitzeko dokumentuak.
  • ExecuteClass(class, variable, type, start, end, properties, namespace) - klaseko datuak kargatzen ditu class idetik start to end Python-en mota aldagai gisa type: list, edo pandak dataframe. properties — Datu multzoan kargatu behar diren klase propietateen zerrenda (komaz bereizita). Maskarak onartzen dira * и ?. Lehenetsia - * (jabetza guztiak). Jabetza %%CLASSNAME baztertu.
  • ExecuteTable(table, variable, type, start, end, properties, namespace) - taulako datuak kargatzen ditu table idetik start to end Python-en.

ExecuteQuery — unibertsala (SQL kontsulta zuzena Python-era pasatuko da). Hala ere, ExecuteGlobal eta bere bilgarriak ExecuteClass и ExecuteTable hainbat murrizketarekin lan egin. Askoz azkarragoak dira (ODBC kontrolatzailea baino 3-5 aldiz azkarragoak eta 20 aldiz azkarragoak). ExecuteQuery). Informazio gehiago helbidean Datuak transferitzeko dokumentuak.
Metodo hauek guztiek edozein eremutatik datuak transferitzea onartzen dute. Plastikozko poltsa isc.py xede-eremuan eskuragarri egon behar da.

ExecuteQuery

ExecuteQuery(request, variable, type, namespace) — edozein SQL kontsulta zuzenaren emaitzak Pythonera transferitzea. Hau da datuak transferitzeko metodorik motelena. Erabili bada ExecuteGlobal eta bere bilgarriak ez daude eskuragarri.

Argudioak:

  • query - SQL kontsulta.
  • variable — datuak idazten diren Python aldagaiaren izena.
  • type - list edo Pandak dataframe.
  • namespace — Eskaera zein eremutan gauzatuko den.

ExecuteGlobal

ExecuteGlobal(global, variable, type, start, end, mask, labelels, namespace) - Python-en global bat pasatzea.

Argudioak:

  • global - izen globala gabe ^
  • variable — datuak idazten diren Python aldagaiaren izena.
  • type - list edo Pandak dataframe.
  • start — globalaren lehen azpiindizea. Derrigorrez %Integer.
  • end — globalaren azken azpiindizea. Derrigorrez %Integer.
  • mask — balio globalaren maskara. Maskara globalaren eremu kopurua baino laburragoa izan daiteke (kasu horretan amaierako eremuak saltatuko dira). Nola formateatu maskara:
    • + pasa balioa dagoen bezala.
    • - saltatu balioa.
    • b — Mota boolearra (0 - False, gainerako guztiak - True).
    • d — Data ($horolog-etik, 1970eko Windows-en, 1900eko Linux-en).
    • t — Ordua ($horolog, gauerditik segundo).
    • m — Denbora-zigilua (formatu-katea URTEA-HILABETEA-EGUNA ORDUA:MINUTUA:BIGARRENA).
  • labels — % Zutabe-izenen zerrenda. Lehenengo elementua azpiindizearen izena da.
  • namespace — Eskaera zein eremutan gauzatuko den.

ExecuteClass

Itzulbiratu ExecuteGlobal. Klaseko definizioan oinarrituta, deialdi bat prestatzen du ExecuteGlobal eta deitzen dio.

ExecuteClass(class, variable, type, start, end, properties, namespace) - klase datuak Python-en pasatzea.

Argudioak:

  • class - Klasearen izena
  • variable — datuak idazten diren Python aldagaiaren izena.
  • type - list edo Pandak dataframe.
  • start - hasierako ID.
  • end - azken Id
  • properties — Datu multzoan kargatu behar diren klase propietateen zerrenda (komaz bereizita). Maskarak onartzen dira * и ?. Lehenetsia - * (jabetza guztiak). Jabetza %%CLASSNAME baztertu.
  • namespace — Eskaera zein eremutan gauzatuko den.

Propietate guztiak bezala pasatzen dira motako propietateak izan ezik %Date, %Time, %Boolean и %TimeStamp - dagozkion Python klaseetan bihurtzen dira.

ExekutatuTaula

Itzulbiratu ExecuteClass. Taularen izena klasearen izenera eta deietara itzultzen du ExecuteClass. Sinadura:

ExecuteTable(table, variable, type, start, end, properties, namespace) - Taularen datuak Python-era pasatzea.

Argudioak:

  • table - mahaiaren izena.
    Gainontzeko argumentu guztiak bezala pasatzen dira ExecuteClass.

Oharrak

  • ExecuteGlobal, ExecuteClass и ExecuteTable berdin azkar lan egin.
  • ExecuteGlobal baino 20 aldiz azkarrago ExecuteQuery datu multzo handietan (transferentzia-denbora > 0.01 segundo).
  • ExecuteGlobal, ExecuteClass и ExecuteTable landu globalak egitura honekin: ^global(key) = $lb(prop1, prop2, ..., propN) non key - zenbaki oso bat.
  • For ExecuteGlobal, ExecuteClass и ExecuteTable onartzen den balio sorta %Date barrutiari dagokio mktime eta sistema eragilearen araberakoa da (leihoak: 1970-01-01, linux 1900-01-01 mac). Erabili %TimeStampbarruti honetatik kanpo datuak transferitzeko edo pandas datu-markoa erabiltzeko hau zerrendarako muga bakarra da.
  • For ExecuteGlobal, ExecuteClass и ExecuteTable datu-iturburua (globala, klasea edo taula) eta aldagaia izan ezik argumentu guztiak aukerakoak dira.

Примеры

Proba klasea isc.py.test.Person Datuak transferitzeko aukera guztiak erakusten dituen metodo bat dauka:

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)

Deitu metodoa do ##class(isc.py.test.Person).Test() datuak transferitzeko metodo guztiek nola funtzionatzen duten ikusteko.

Laguntzaile metodoak

  • GetVariableInfo(variable, serialization, .defined, .type, .length) — lortu aldagaiari buruzko informazioa: definitu den ala ez, bere klasea eta serializazioaren luzera.
  • GetVariableDefined(variable, .defined) — aldagaia definituta dagoen.
  • GetVariableType(variable, .type) — lortu aldagaiaren klasea.
  • GetStatus() - Lortu eta kendu azken salbuespena Python aldean.
  • GetModuleInfo(module, .imported, .alias) — Lortu moduluaren aldagaia eta inportatu egoera.
  • GetFunctionInfo(function, .defined, .type, .docs, .signature, .arguments) — funtzioari buruzko informazioa lortu.

Elkarreragingarritasuna

Python Gateway terminaletik nola deitzen ikasi duzu, orain has gaitezen ekoizpenean erabiltzen. Modu honetan Python-ekin elkarreragiteko oinarria da isc.py.ens.Operation. Aukera ematen digu:

  • Exekutatu kodea Python-en
  • Gorde/Berrezarri Python testuingurua
  • Kargatu eta jaso datuak Python-etik

Funtsean, Python eragiketa bat wrapper bat da isc.py.Main. Operazioa isc.py.ens.Operation InterSystems IRIS produktuetatik Python prozesuarekin elkarreragiteko gaitasuna eskaintzen du. Bost kontsulta onartzen dira:

  • isc.py.msg.ExecutionRequest Python kodea exekutatzeko. Itzuliak isc.py.msg.ExecutionResponse exekuzio emaitzarekin eta eskatutako aldagaien balioekin.
  • isc.py.msg.StreamExecutionRequest Python kodea exekutatzeko. Itzuliak isc.py.msg.StreamExecutionResponse exekuzioaren emaitza eta eskatutako aldagaien balioak. Analogikoa isc.py.msg.ExecutionRequest, baina kateen ordez korronteak onartzen eta itzultzen ditu.
  • isc.py.msg.QueryRequest SQL kontsulta bat exekutatzearen emaitza transmititzeko. Itzuliak Ens.Response.
  • isc.py.msg.GlobalRequest/isc.py.msg.ClassRequest/isc.py.msg.TableRequest global/klase/taularen datuak pasatzeko. Itzuliak Ens.Response.
  • isc.py.msg.SaveRequest Python testuingurua gordetzeko. Itzuliak Ens.StringResponse testuinguruaren IDarekin.
  • isc.py.msg.RestoreRequest Python testuingurua berreskuratzeko.

    Horrez gain, isc.py.ens.Operation bi ezarpen ditu:

    • Initializer — interfazea inplementatzen duen klase bat hautatzea isc.py.init.Abstract. Funtzioak, moduluak, klaseak eta abar kargatzeko erabil daiteke. Prozesua hasten denean behin exekutatzen da.
    • PythonLib - (Linux soilik) kargatzean akatsak ikusten badituzu, ezarri bere balioa libpython3.6m.so edo baita Python liburutegirako bide osoa ere.

Negozio-prozesuak sortzea

Negozio-prozesuen garapena errazten duten bi klase daude eskuragarri:

  • isc.py.ens.ProcessUtils ordezkapen aldakorra duten jardueretatik oharrak ateratzeko aukera ematen du.
  • isc.py.util.BPEmulator Python-ekin negozio-prozesuak probatzea errazten du. Negozio prozesu bat (Python zatiak) exekutatu dezake uneko prozesuan.

Aldagaien ordezkapena

Oinordetzan jasotako negozio-prozesu guztiak isc.py.ens.ProcessUtils, metodoa erabil dezake GetAnnotation(name) jardueraren oharpen balioa bere izenaren arabera lortzeko. Jardueraren oharrak Python-era pasa aurretik InterSystems IRIS aldean kalkulatuko diren aldagaiak izan ditzake. Hona hemen aldagaien ordezkapenaren sintaxia:

  • ${class:method:arg1:...:argN} - metodo-deia
  • #{expr} — exekutatu kodea ObjectScript hizkuntzan.

Adibide bat eskuragarri dago probako negozio-prozesuan isc.py.test.Process, adibidez, jardueran Correlation Matrix: Graph: f.savefig(r'#{process.WorkDirectory}SHOWCASE${%PopulateUtils:Integer:1:100}.png'). Adibide honetan:

  • #{process.WorkDirectory} objektuaren WorkDirectory propietatea itzultzen du process, hau da, klasearen instantzia bat isc.py.test.Process horiek. egungo negozio-prozesua.
  • ${%PopulateUtils:Integer:1:100} metodo bat deitzen du Integer class %PopulateUtils, argudioak pasatuz 1 и 100, barrutian ausazko zenbaki oso bat itzuliz 1...100.

Probatu negozio-prozesua

Proba produktuak eta proba negozio-prozesuak lehenespenez eskuragarri daude Python Gateway-ren zati gisa. Horiek erabiltzeko:

  1. OS terminalean, exekutatu: pip install pandas matplotlib seaborn.
  2. InterSystems IRIS terminalean, exekutatu: do ##class(isc.py.test.CannibalizationData).Import() probako datuak betetzeko.
  3. Produktuak martxan jarri isc.py.test.Production.
  4. Bidali eskaera mota Ens.Request в isc.py.test.Process.

Ikus dezagun nola funtzionatzen duen dena batera. Ireki isc.py.test.Process BPL editorean:

Python Gateway InterSystems IRIS-en

Kode Exekuzioa

Erronka garrantzitsuena Python kodea exekutatzea da:

Python Gateway InterSystems IRIS-en

Erabilitako kontsulta isc.py.msg.ExecutionRequest, hona hemen bere propietateak:

  • Code - Python kodea.
  • SeparateLines — kodea exekutatzeko lerrotan zatitu ala ez. $c(10) (n) kateak bereizteko erabiltzen da. Kontuan izan EZ dela gomendatzen mezu osoa aldi berean prozesatzea, funtzio hau prozesatzea baino ez dela egin nahi def eta antzeko lerro anitzeko esamoldeak. Lehenetsia 0.
  • Variables — Erantzunari gehituko zaizkion aldagaien zerrenda komaz bereizita.
  • Serialization — Nola serializatu itzuli nahi ditugun aldagaiak. Aukerak: Str, Repr, JSON, Pickle и Dill, lehenetsia Str.

Gure kasuan, propietatea bakarrik ezarri dugu Code, beraz, gainerako propietate guztiek balio lehenetsiak erabiltzen dituzte. Deituz ezarri dugu process.GetAnnotation("Import pandas"), exekuzioan aldagaien ordezkapena egin ondoren ohar bat itzultzen duena. Azken finean, kodea import pandas as pd Python-era pasatuko da. GetAnnotation erabilgarria izan daiteke lerro anitzeko Python script-ak lortzeko, baina ez dago inolako mugarik kodea lortzeko metodo honetan. Jabetza ezar dezakezu Code edozein modutan zuretzat komenigarria.

Aldagaiak lortzea

Beste erronka interesgarri bat erabiltzea isc.py.msg.ExecutionRequest - Correlation Matrix: Tabular:

Python Gateway InterSystems IRIS-en

Python aldean Korrelazio Matrizea kalkulatzen du eta aldagaia ateratzen du corrmat itzuli InterSystems IRIS-era JSON formatuan eskaeraren propietateak ezarriz:

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

Emaitzak Visual Trace-n ikus ditzakegu:

Python Gateway InterSystems IRIS-en

Eta BPn balio hau behar badugu, honela lor dezakegu: callresponse.Variables.GetAt("corrmat").

Datuen transferentzia

Ondoren, hitz egin dezagun InterSystems IRISetik Python-era datuak transferitzeari buruz; datuak transferitzeko eskaera guztiek interfazea ezartzen dute. isc.py.msg.DataRequestpropietate hauek eskaintzen dituena:

  • Variable — datuak idazten diren Python aldagai bat.
  • Type — Aldagai mota: dataframe (pandas datu-markoa) edo list.
  • Namespace — datuak jasotzen ditugun eremua. Plastikozko poltsa isc.py eremu honetan eskuragarri egon beharko luke. Baliteke produktuaren laguntzarik gabeko eremua izatea.

Interfaze honetan oinarrituta, 4 eskaera klase inplementatzen dira:

  • isc.py.msg.QueryRequest - Ezarri propietatea Query SQL kontsulta bat bidaltzeko.
  • isc.py.msg.ClassRequest - Ezarri propietatea Class klaseko datuak pasatzeko.
  • isc.py.msg.TableRequest - Ezarri propietatea Table taulako datuak transferitzeko.
  • isc.py.msg.GlobalRequest - Ezarri propietatea Global datuen transferentzia globalerako.

Proba prozesuan, begiratu jarduera RAWNon isc.py.msg.QueryRequest ekintzan erakusten.

Python Gateway InterSystems IRIS-en

Gorde/Berrezarri Python testuingurua

Azkenik, Python testuingurua gorde dezakegu InterSystems IRIS-en, horretarako bidaliko dugu isc.py.msg.SaveRequest argudioekin:

  • Mask — Maskararekin bat datozen aldagaiak bakarrik gordetzen dira. Onartua * и ?... Adibidea: "Data*, Figure?"... Lehenetsia *.
  • MaxLength — Biltegiratutako aldagaiaren gehienezko luzera. Aldagai baten serializazioa luzeagoa bada, alde batera utziko da. Ezarri 0-n edozein luzeratako aldagaiak lortzeko. Lehenetsia $$$MaxStringLength.
  • Name — Testuinguruaren izena (aukerakoa).
  • Description — Testuinguruaren deskribapena (aukerakoa).

Itzultzeak Ens.StringResponse с Id gordetako testuingurua. Proba prozesuan, begiratu jarduera Save Context.

Lotutako eskaera isc.py.msg.RestoreRequest InterSystems IRIS-tik testuingurua kargatzen du Python-era:

  • ContextId — Testuinguruaren identifikatzailea.
  • Clear — garbitu testuingurua leheneratu aurretik.

Jupyter Notebook

Jupyter Notebook kodea, bistaratzeak eta testuak dituzten koadernoak sortu eta argitaratzeko aukera ematen duen kode irekiko web aplikazio bat da. Python Gateway-k BPL prozesuak Jupyter Notebook moduan ikusteko eta editatzeko aukera ematen du. Kontuan izan gaur egun Python 3 exekutatzaile normala erabiltzen dela.

Luzapen honek oharpenek Python kodea dutela eta jarduera-izenak erabiltzen ditu aurreko titulu gisa. Orain posible da PythonGateway negozio-prozesuak garatzea Jupyter Notebook-en. Hona hemen posible dena:

  • Sortu negozio prozesu berriak
  • Ezabatu negozio-prozesuak
  • Sortu jarduera berriak
  • Aldatu jarduerak
  • Ezabatu jarduerak

Hemen demo bideoa. Eta pantaila-argazki batzuk:

Prozesuen esploratzailea

Python Gateway InterSystems IRIS-en

Prozesuaren editorea

Python Gateway InterSystems IRIS-en

Instalazio-

  1. InterSystems IRIS 2019.2+ beharko duzu.
  2. Instalatu PythonGateway v0.8+ (beharrezkoa bakarrik isc.py.util.Jupyter, isc.py.util.JupyterCheckpoints и isc.py.ens.ProcessUtils).
  3. Eguneratu ObjectScript kodea biltegitik.
  4. Exekutatu do ##class(isc.py.util.Jupyter).Install() eta jarraitu argibideak.

Dokumentazioa.

Findings

MLToolkit tresna multzo bat da, zeinen helburua ereduak eta transakzio-ingurune bat konbinatzea da, eraikitako ereduak zure negozio-prozesuetan zuzenean erabil ditzaten. Python Gateway MLToolkit-en parte da eta Python lengoaiarekin integrazioa eskaintzen du, Python-en (Datu Zientzialari askoren ingurune nagusia) sortutako makina ikasteko algoritmoak orkestratzeko aukera emanez, prest egindako liburutegi ugari erabili AI analitiko eta robotiko moldagarria azkar sortzeko / ML irtenbideak InterSystems IRIS plataforman.

Erreferentziak

MLToolkit

MLToolkit erabiltzaile-taldea GitHub biltegi pribatu bat da, InterSystems GitHub erakunde korporatiboaren baitan sortutakoa. MLToolkit osagaiak instalatzen, ikasten edo erabiltzen ari diren kanpoko erabiltzaileentzat da, Python Gateway barne. Taldeak hainbat kasu inplementatu ditu (iturburu-kodea eta proba-datuekin) marketinaren, fabrikazioaren, medikuntzaren eta beste hainbat industriaren alorretan. ML Toolkit Erabiltzaile Taldean sartzeko, bidali mezu elektroniko labur bat helbide honetara: [posta elektroniko bidez babestua] eta sartu informazio hau zure gutunean:

  • GitHub erabiltzaile-izena
  • Antolaketa (lan egiten edo ikasten duzu)
  • Kargua (zure erakundeko benetako posizioa, "Ikaslea" edo "Independientea").
  • Herriko

Artikulua irakurri dutenentzat eta InterSystems IRISek adimen artifiziala eta ikaskuntza automatikoko motorrak garatzeko edo ostatatzeko plataforma gisa dituen gaitasunetan interesa dutenentzat, zure enpresarentzat interesgarriak diren eszenatoki posibleak eztabaidatzera gonbidatzen zaituztegu. Pozik egongo gara zure enpresaren beharrak aztertu eta elkarrekin ekintza-plan bat zehazten; Gure AI/ML aditu taldearen harremanetarako helbide elektronikoa - [posta elektroniko bidez babestua].

Iturria: www.habr.com

Gehitu iruzkin berria