Python Gateway InterSystems IRIS:ssä

Tämä artikkeli käsittelee Python Gatewaytä, avoimen lähdekoodin yhteisöprojektia InterSystems IRIS -tietoalustalle. Tämän projektin avulla voit organisoida mitä tahansa Pythonissa (monen tietotutkijan pääympäristö) luotuja koneoppimisalgoritmeja, käyttää lukuisia valmiita kirjastoja luodaksesi nopeasti mukautuvia, robottianalyyttisiä AI/ML-ratkaisuja InterSystems IRIS -alustalle. Tässä artikkelissa näytän sinulle, kuinka InterSystems IRIS voi ohjata Python-prosesseja, suorittaa tehokasta kaksisuuntaista viestintää ja luoda älykkäitä liiketoimintaprosesseja.

suunnitelma

  1. Johdanto.
  2. Työkalut.
  3. Asennus.
  4. API.
  5. Yhteentoimivuus.
  6. Jupyter muistikirja.
  7. Johtopäätökset.
  8. Linkit.
  9. M.L.Toolkit.

Esittely

Python on korkeatasoinen, yleiskäyttöinen ohjelmointikieli, joka keskittyy kehittäjien tuottavuuden ja koodin luettavuuden parantamiseen. Tässä artikkelisarjassa puhun Python-kielen käyttömahdollisuuksista InterSystems IRIS -alustalla, kun taas tämän artikkelin pääpaino on Pythonin käyttö kielenä koneoppimismallien luomiseen ja soveltamiseen.

Koneoppiminen (ML) on tekoälymenetelmien luokka, jonka ominaispiirre ei ole ongelman suora ratkaisu, vaan oppiminen monien vastaavien ongelmien ratkaisuprosessissa.

Koneoppimisalgoritmit ja -mallit ovat yhä yleisempiä. Tähän on monia syitä, mutta kaikki riippuu saavutettavuudesta, yksinkertaisuudesta ja käytännön tulosten saavuttamisesta. Onko klusterointi tai jopa hermoverkkomallinnus uusi tekniikka?

Ei tietenkään, mutta nykyään ei tarvitse kirjoittaa satoja tuhansia koodirivejä yhden mallin ajamiseen, ja mallien luomisen ja käytön kustannukset pienenevät ja pienentyvät.

Työkalut kehittyvät – vaikka meillä ei ole täysin GUI-suuntautuneita AI/ML-työkaluja, on havaittavissa myös monien muiden tietojärjestelmäluokkien, kuten BI:n (koodin kirjoittamisesta kehysten ja GUI-suuntautuneiden konfiguroitavien ratkaisujen käyttöön) kohdalla havaittu edistys. AI/ML-luontityökaluissa. Olemme jo ohittaneet koodin kirjoittamisen vaiheen ja nykyään käytämme kehyksiä mallien rakentamiseen ja koulutukseen.

Muut parannukset, kuten kyky levittää esikoulutettua mallia, jossa loppukäyttäjän on yksinkertaisesti saatava mallin koulutukseen omiin tietoihinsa, helpottavat myös koneoppimisen aloittamista. Nämä edistysaskeleet tekevät koneoppimisen oppimisesta paljon helpompaa niin ammattilaisten kuin yritystenkin kannalta.

Toisaalta keräämme yhä enemmän dataa. Yhtenäisen tietoalustan, kuten InterSystems IRIS, avulla kaikki tämä tieto voidaan valmistaa välittömästi ja käyttää syötteenä koneoppimismalleihin.

Pilviin siirtymisen myötä AI/ML-projektien käynnistäminen on helpompaa kuin koskaan. Voimme kuluttaa vain tarvitsemamme resurssit. Lisäksi pilvialustojen tarjoaman rinnakkaisuuden ansiosta voimme säästää hukattua aikaa.

Mutta entä tulokset? Tässä asiat monimutkaistuvat. Mallien rakentamiseen on monia työkaluja, joista keskustelen seuraavaksi. Hyvän mallin rakentaminen ei ole helppoa, mutta mitä seuraavaksi? Yrityksen mallin käytöstä hyötyminen on myös ei-triviaali tehtävä. Ongelman ydin on analyyttisten ja transaktioiden työkuormien ja tietomallien erottaminen toisistaan. Kun koulutamme mallia, teemme sen yleensä historiallisten tietojen perusteella. Mutta rakennetun mallin paikka on transaktiotietojen käsittelyssä. Mitä hyötyä on parhaasta vilpillisten tapahtumien havaitsemismallista, jos käytämme sitä kerran päivässä? Huijarit ovat jo kauan sitten lähteneet rahojen kanssa. Meidän on koulutettava mallia historiatietoihin, mutta meidän on myös sovellettava sitä reaaliajassa uusiin saapuviin tietoihin, jotta liiketoimintaprosessimme voivat toimia mallin tekemien ennusteiden mukaisesti.

ML Toolkit on työkalupakki, joka tekee juuri sen: tuo mallit yhteen ja transaktioympäristön niin, että rakentamiasi malleja voidaan helposti käyttää suoraan liiketoimintaprosesseissasi. Python Gateway on osa ML-työkalupakkia ja tarjoaa integraation Python-kieleen (samanlainen kuin R Gateway, osa ML Toolkit -työkalua mahdollistaa integraation R-kieleen).

Työkalut

Ennen kuin jatkamme, haluaisin kuvailla muutamia Python-työkaluja ja kirjastoja, joita käytämme myöhemmin.

Tekniikka

  • Python on tulkittu, yleiskäyttöinen korkean tason ohjelmointikieli. Kielen tärkein etu on suuri matemaattisten, ML- ja AI-kirjastojen kirjasto. ObjectScriptin tavoin se on oliokieli, mutta kaikki määritellään dynaamisesti, ei staattisesti. Myös kaikki on esine. Myöhemmissä artikkeleissa oletetaan ohimenevän kielen tuntemusta. Jos haluat aloittaa oppimisen, suosittelen aloittamaan dokumentointi.
  • Seuraavia harjoituksia varten aseta Python 3.6.7 64-bittinen.
  • IDE: Käytän PyCharm, mutta yleisesti много. Jos käytät Atelieria, Python-kehittäjille on olemassa Eclipse-laajennus. Jos käytät VS-koodia, Pythonille on laajennus.
  • Muistikirja: IDE:n sijaan voit kirjoittaa ja jakaa skriptejäsi online-muistikirjoihin. Suosituin niistä on jupyter.

kirjastot

Tässä on (osittainen) luettelo koneoppimiskirjastoista:

  • Nöpö — peruspaketti tarkkoja laskelmia varten.
  • Panda — tehokkaat tietorakenteet ja tietojen analysointivälineet.
  • Matplotlib - Kaavioiden luominen.
  • seaborn - Matplotlibiin perustuva datan visualisointi.
  • Sklearn — koneoppimismenetelmät.
  • XGBoost — Gradient Boosting -metodologian koneoppimisalgoritmit.
  • Gensim – NLP.
  • Keras - hermoverkot.
  • Tensorflow on alusta koneoppimismallien luomiseen.
  • PyTorch on alusta Pythoniin keskittyvien koneoppimismallien luomiseen.
  • Nyoka - PMML eri malleista.

AI/ML-tekniikat tekevät liiketoiminnasta tehokkaampaa ja mukautuvampaa. Lisäksi näitä teknologioita on nykyään entistä helpompi kehittää ja toteuttaa. Aloita oppiminen AI/ML-tekniikoista ja siitä, miten ne voivat auttaa organisaatiotasi kasvamaan.

Asennus

Python Gatewayn asentamiseen ja käyttämiseen on useita tapoja:

  • käyttöjärjestelmä
    • Windows
    • Linux
    • Mac
  • Satamatyöläinen
    • Käytä DockerHubin kuvaa
    • Luo oma ilme

Asennustavasta riippumatta tarvitset lähdekoodin. Ainoa paikka ladata koodi on julkaisujen sivu. Se sisältää testattuja vakaita julkaisuja, nappaa vain uusin. Tällä hetkellä se on 0.8, mutta ajan myötä tulee uusia. Älä kloonaa/lataa arkistoa, lataa uusin julkaisu.

käyttöjärjestelmä

Jos asennat Python Gatewayn käyttöjärjestelmään, sinun on ensin asennettava Python (käyttöjärjestelmästä riippumatta). Tätä varten:

  1. Asenna Python 3.6.7 64 bit. Python on suositeltavaa asentaa oletushakemistoon.
  2. Asenna moduuli dill: pip install dill.
  3. Lataa ObjectScript-koodi (esim. do $system.OBJ.ImportDir("C:InterSystemsReposPythoniscpy", "*.cls", "c",,1)) mille tahansa alueelle, jolla on tuotteita. Jos haluat olemassa olevan alueen tukevan tuotteita, suorita: write ##class(%EnsembleMgr).EnableNamespace($Namespace, 1).
  4. Paikka huomioteksti DLL/SO/DYLIB kansioon bin InterSystems IRIS -esiintymäsi. Kirjastotiedoston on oltava saatavilla palauttamassa polussa write ##class(isc.py.Callout).GetLib().

Windows

  1. Varmista, että ympäristömuuttuja on PYTHONHOME viittaa Python 3.6.7:ään.
  2. Varmista, että järjestelmäympäristömuuttuja on PATH sisältää muuttujan PYTHONHOME (tai hakemistoon, johon se viittaa).

Linux (Debian/Ubuntu)

  1. Tarkista, onko ympäristömuuttuja PATH se sisältää /usr/lib и /usr/lib/x86_64-linux-gnu. Käytä tiedostoa /etc/environment ympäristömuuttujien asettamiseen.
  2. Virheiden sattuessa undefined symbol: _Py_TrueStruct aseta asetus PythonLib... myös sisään Readme siellä on Vianetsintä-osio.

Mac

  1. Tällä hetkellä vain python 3.6.7 on tuettu python.org. Tarkista muuttuja PATH.

Jos olet muuttanut ympäristömuuttujia, käynnistä InterSystems-tuote uudelleen.

Satamatyöläinen

Säiliöiden käytöllä on useita etuja:

  • Siirrettävyys
  • tehokkuuden
  • Eristys
  • keveys
  • Muuttumattomuus

Katso tämä artikkelisarja saadaksesi lisätietoja Dockerin käyttämisestä InterSystems-tuotteiden kanssa.

Kaikki Python Gateway -versiot ovat tällä hetkellä konttipohjaisia. 2019.4.

Valmis kuva

Juosta: docker run -d -p 52773:52773 --name irispy intersystemscommunity/irispy-community:latestPython Gatewayn lataamiseen ja suorittamiseen InterSystems IRIS Community Editionin kanssa. Siinä kaikki.

Luo oma ilme

Voit luoda telakointikuvan suorittamalla arkiston juuressa: docker build --force-rm --tag intersystemscommunity/irispy:latest ..
Oletusarvoisesti kuva rakennetaan kuvan perusteella store/intersystems/iris-community:2019.4.0.383.0, mutta voit muuttaa tätä asettamalla muuttujan IMAGE.
Luodaksesi InterSystems IRIS:stä: `docker build --build-arg IMAGE=store/intersystems/iris:2019.4.0.383.0 --force-rm --tag intersystemscommunity/irispy:latest'.

Tämän jälkeen voit ajaa Docker-kuvan:

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

Jos käytät InterSystems IRIS Community Editioniin perustuvaa kuvaa, sinun ei tarvitse määrittää avainta.

Kommentit

  • Testiprosessi isc.py.test.Process tallentaa useita kuvia väliaikaiseen hakemistoon. Haluat ehkä muuttaa tämän polun liitettyyn hakemistoon. Voit tehdä tämän muokkaamalla asetusta WorkingDir liitetyn hakemiston määrittäminen.
  • Pääset terminaaliin suorittamalla: docker exec -it irispy sh.
  • Pääsy järjestelmänhallintaportaaliin kirjautumalla SuperUser/SYS.
  • Pysäytä kontti suorittamalla: docker stop irispy && docker rm --force irispy.

Tarkistetaan asennusta

Kun olet asentanut Python Gatewayn, kannattaa tarkistaa, että se toimii. Suorita tämä koodi InterSystems IRIS -päätteessä:

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

Tuloksen pitäisi olla HELLO - Python-muuttujan arvo x. Jos palautustila sc on virhe tai var tyhjä, tarkista Lueminut—Vianetsintä-osio.

API

Python Gateway on asennettu ja olet varmistanut, että se toimii. Aika alkaa käyttää!
Pythonin pääkäyttöliittymä on isc.py.Main. Se tarjoaa seuraavat menetelmäryhmät (kaikki palauttavat %Status):

  • Koodin suoritus
  • Tiedonsiirto
  • avustavia

Koodin suoritus

Näiden menetelmien avulla voit suorittaa mielivaltaisen Python-koodin.

SimpleString

SimpleString on päämenetelmä. Se vaatii 4 valinnaista argumenttia:

  • code on suoritettava koodirivi. Rivinsyöttömerkki: $c(10).
  • returnVariable on palautettavan muuttujan nimi.
  • serialization - miten sarjoitetaan returnVariable. 0 - merkkijono (oletus), 1 - toisto.
  • result - ByRef viittaus muuttujaan, johon arvo kirjoitetaan returnVariable.

Yllä olemme tehneet:

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

Tässä esimerkissä määritämme Python-muuttujan x значение Hello ja haluat palauttaa Python-muuttujan arvon x ObjectScript-muuttujaan var.

ExecuteCode

ExecuteCode on turvallisempi ja vähemmän rajoittava vaihtoehto SimpleString.
InterSystems IRIS -alustan rivit ovat rajoitettuja 3 641 144 merkkiin, ja jos haluat suorittaa pidemmän koodin, sinun on käytettävä streameja.
Se vaatii kaksi argumenttia:

  • code — suoritettava Python-koodin merkkijono tai virta.
  • variable - (valinnainen) määrittää suorituksen tuloksen code tämä Python-muuttuja.

Ehdota käyttöä:

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

Tässä esimerkissä kerromme 2 kolmella ja tallennamme tuloksen Python-muuttujaan y.

Tiedonsiirto

Siirrä tietoja Pythonille ja Pythonista.

Python -> InterSystems IRIS

Python-muuttujan arvon saamiseen InterSystems IRIS:ssä on neljällä tavalla, riippuen tarvitsemastasi sarjoituksesta:

  • String yksinkertaisia ​​tietotyyppejä ja virheenkorjausta varten.
  • Repr yksinkertaisten kohteiden tallentamiseen ja virheenkorjaukseen.
  • JSON helpottaa tietojen käsittelyä InterSystems IRIS -puolella.
  • Pickle esineiden tallentamiseen.

Näiden menetelmien avulla voit vastaanottaa muuttujia Pythonista merkkijonona tai virtoina.

  • GetVariable(variable, serialization, .stream, useString) - saada serialization muuttuja variable в stream. jos useString on 1 ja serialisointi sijoitetaan merkkijonoon, sitten palautetaan merkkijono, ei virta.
  • GetVariableJson(variable, .stream, useString) - saada muuttujan JSON-serialisointi.
  • GetVariablePickle(variable, .stream, useString, useDill) - Hanki suolakurkku (tai tilli) serialisointi muuttujasta.

Yritetään saada muuttujamme y.

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

InterSystems IRIS -> Python

Ladataan tietoja InterSystems IRIS:stä Pythoniin.

  • ExecuteQuery(query, variable, type, namespace) - luo tietojoukon (pandas dataframe tai list) sql-kyselystä ja aseta se python-muuttujaksi variable. Muovipussi isc.py pitäisi olla saatavilla alueella namespace - pyyntö suoritetaan siellä.
  • ExecuteGlobal(global, variable, type, start, end, mask, labels, namespace) - lataa globaalia dataa global alaindeksistä start до end Pythonissa tyyppimuuttujana type: listtai pandat dataframe. Valinnaisten argumenttien kuvaus mask ja labels saatavilla luokan dokumentaatiossa ja arkistossa Tiedonsiirtoasiakirjat.
  • ExecuteClass(class, variable, type, start, end, properties, namespace) - lataa luokkatiedot class tunnuksesta start до end Pythonissa tyyppimuuttujana type: listtai pandat dataframe. properties — luettelo (pilkulla erotettuna) tietojoukkoon ladattavista luokan ominaisuuksista. Maskit tuettu * и ?. Oletus - * (kaikki ominaisuudet). Omaisuus %%CLASSNAME huomiotta.
  • ExecuteTable(table, variable, type, start, end, properties, namespace) - lataa taulukon tiedot table tunnuksesta start до end pythonissa.

ExecuteQuery - universaali (kaikki kelvolliset SQL-kyselyt välitetään Pythonille). Kuitenkin, ExecuteGlobal ja hänen kääreensä ExecuteClass и ExecuteTable työskennellä useiden rajoitusten kanssa. Ne ovat paljon nopeampia (3-5 kertaa nopeampia kuin ODBC-ohjain ja 20 kertaa nopeampia kuin ExecuteQuery). Lisätietoa osoitteessa Tiedonsiirtoasiakirjat.
Kaikki nämä menetelmät tukevat tiedonsiirtoa miltä tahansa alueelta. Muovipussi isc.py on oltava saatavilla kohdealueella.

ExecuteQuery

ExecuteQuery(request, variable, type, namespace) - minkä tahansa kelvollisen SQL-kyselyn tulosten välittäminen Pythonille. Tämä on hitain tiedonsiirtomenetelmä. Käytä jos ExecuteGlobal ja sen kääreitä ei ole saatavilla.

argumentit:

  • query - sql-kysely.
  • variable - Python-muuttujan nimi, johon tiedot kirjoitetaan.
  • type - list tai pandat dataframe.
  • namespace - alue, jolla pyyntö suoritetaan.

ExecuteGlobal

ExecuteGlobal(global, variable, type, start, end, mask, labelels, namespace) - Globaalin välittäminen Pythonille.

argumentit:

  • global on globaalin nimi ilman ^
  • variable - Python-muuttujan nimi, johon tiedot kirjoitetaan.
  • type - list tai pandat dataframe.
  • start — globaalin ensimmäinen alaindeksi. Välttämättä %Integer.
  • end on globaalin viimeinen alaindeksi. Välttämättä %Integer.
  • mask — globaalien arvojen naamio. Maski voi olla lyhyempi kuin yleisen kenttien määrä (jolloin lopussa olevat kentät ohitetaan). Maskin muotoilu:
    • + välitä arvo sellaisenaan.
    • - ohittaa arvo.
    • b - Boolen tyyppi (0 - False, kaikki loput - True).
    • d - Päivämäärä ($horolog, Windowsissa vuodesta 1970, Linuxissa vuodesta 1900).
    • t - Aika ($horolog, sekuntia puolenyön jälkeen).
    • m — Aikaleima (VUOSI-KUUKAUSI-PÄIVÄ TUNTI:MINUUTI:TOINEN muotomerkkijono).
  • labels - %Lista sarakkeiden nimistä. Ensimmäinen elementti on alaindeksin nimi.
  • namespace - alue, jolla pyyntö suoritetaan.

ExecuteClass

kääri päälle ExecuteGlobal. Valmistelee kutsun luokan määritelmän perusteella ExecuteGlobal ja soittaa hänelle.

ExecuteClass(class, variable, type, start, end, properties, namespace) - luokkatietojen välittäminen Pythonille.

argumentit:

  • class - luokan nimi
  • variable - Python-muuttujan nimi, johon tiedot kirjoitetaan.
  • type - list tai pandat dataframe.
  • start -aloitustunnus.
  • end - lopullinen tunnus
  • properties — luettelo (pilkulla erotettuna) tietojoukkoon ladattavista luokan ominaisuuksista. Maskit tuettu * и ?. Oletus - * (kaikki ominaisuudet). Omaisuus %%CLASSNAME huomiotta.
  • namespace - alue, jolla pyyntö suoritetaan.

Kaikki ominaisuudet välitetään sellaisenaan paitsi tyyppiominaisuudet %Date, %Time, %Boolean и %TimeStamp - ne muunnetaan vastaaviksi Python-luokiksi.

ExecuteTable

kääri päälle ExecuteClass. Kääntää taulukon nimen luokan nimeksi ja kutsuu ExecuteClass. Allekirjoitus:

ExecuteTable(table, variable, type, start, end, properties, namespace) - taulukkotietojen välittäminen Pythonille.

argumentit:

  • table - taulukon nimi.
    Kaikki muut argumentit hyväksytään sellaisenaan. ExecuteClass.

Huomautuksia

  • ExecuteGlobal, ExecuteClass и ExecuteTable toimivat yhtä nopeasti.
  • ExecuteGlobal 20 kertaa nopeampi kuin ExecuteQuery suurilla tietojoukoilla (siirtoaika > 0.01 sekuntia).
  • ExecuteGlobal, ExecuteClass и ExecuteTable työskentele globaalien kanssa tällä rakenteella: ^global(key) = $lb(prop1, prop2, ..., propN) missä key on kokonaisluku.
  • varten ExecuteGlobal, ExecuteClass и ExecuteTable tuettu arvoalue %Date vastaa aluetta mktime ja riippuu käyttöjärjestelmästäikkunat: 1970-01-01, linux 1900-01-01, mac). Käyttää %TimeStampsiirtää tietoja tämän alueen ulkopuolella tai käyttää panda-tietokehystä muodossa tämä rajoitus koskee vain luetteloa.
  • varten ExecuteGlobal, ExecuteClass и ExecuteTable kaikki argumentit paitsi tietolähde (globaali, luokka tai taulukko) ja muuttuja ovat valinnaisia.

Примеры

koeluokka isc.py.test.Person sisältää menetelmän, joka näyttää kaikki tiedonsiirtovaihtoehdot:

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)

kutsumenetelmä do ##class(isc.py.test.Person).Test() nähdäksesi kuinka kaikki tiedonsiirtomenetelmät toimivat.

Auttajamenetelmät

  • GetVariableInfo(variable, serialization, .defined, .type, .length) - saada tietoa muuttujasta: onko se määritelty, luokka ja serialisoinnin pituus.
  • GetVariableDefined(variable, .defined) - onko muuttuja määritelty.
  • GetVariableType(variable, .type) - saada muuttujan luokka.
  • GetStatus() - Hanki ja poista viimeinen poikkeus Python-puolella.
  • GetModuleInfo(module, .imported, .alias) — saada moduulimuuttuja ja tuontitila.
  • GetFunctionInfo(function, .defined, .type, .docs, .signature, .arguments) - saada tietoa toiminnosta.

Yhteentoimivuus

Olet oppinut soittamaan Python Gatewaylle päätteestä, nyt aletaan käyttää sitä tuotannossa. Vuorovaikutuksen perusta Pythonin kanssa tässä tilassa on isc.py.ens.Operation. Sen avulla voimme:

  • Suorita Python-koodi
  • Tallenna/palauta Python-konteksti
  • Lataa ja vastaanota tietoja Pythonista

Pohjimmiltaan Pyhton-operaatio on kääre isc.py.Main. Operaatio isc.py.ens.Operation mahdollistaa vuorovaikutuksen InterSystems IRIS -tuotteiden Python-prosessin kanssa. Viittä pyyntöä tuetaan:

  • isc.py.msg.ExecutionRequest Python-koodin suorittamiseen. palaa isc.py.msg.ExecutionResponse suoritustuloksen ja pyydettyjen muuttujien arvojen kanssa.
  • isc.py.msg.StreamExecutionRequest Python-koodin suorittamiseen. palaa isc.py.msg.StreamExecutionResponse suorituksen tulos ja pyydettyjen muuttujien arvot. Analoginen isc.py.msg.ExecutionRequest, mutta hyväksyy ja palauttaa streameja merkkijonojen sijaan.
  • isc.py.msg.QueryRequest siirtääksesi SQL-kyselyn suorittamisen tuloksen. palaa Ens.Response.
  • isc.py.msg.GlobalRequest/isc.py.msg.ClassRequest/isc.py.msg.TableRequest globaalien/luokka-/taulukkotietojen välittämiseen. palaa Ens.Response.
  • isc.py.msg.SaveRequest Python-kontekstin tallentamiseen. palaa Ens.StringResponse kontekstitunnuksella.
  • isc.py.msg.RestoreRequest Python-kontekstin palauttamiseksi.

    Lisäksi, isc.py.ens.Operation on kaksi asetusta:

    • Initializer - valita luokka, joka toteuttaa käyttöliittymän isc.py.init.Abstract. Sitä voidaan käyttää funktioiden, moduulien, luokkien ja vastaavien lataamiseen. Se suoritetaan kerran, kun prosessi alkaa.
    • PythonLib - (Vain Linux) jos näet käynnistysvirheitä, aseta sen arvoksi libpython3.6m.so tai jopa koko polku Python-kirjastoon.

Liiketoimintaprosessien luominen

Saatavilla on kaksi luokkaa, jotka helpottavat liiketoimintaprosessien kehittämistä:

  • isc.py.ens.ProcessUtils voit poimia merkintöjä aktiviteeteista, joissa on muuttujakorvaus.
  • isc.py.util.BPEmulator helpottaa liiketoimintaprosessien testaamista Pythonilla. Se voi suorittaa liiketoimintaprosessin (Python-osat) nykyisessä prosessissa.

Muuttuva korvaus

Kaikki liiketoimintaprosessit on peritty isc.py.ens.ProcessUtils, voi käyttää menetelmää GetAnnotation(name) saadaksesi aktiviteettimerkinnän arvon sen nimen perusteella. Aktiviteetin huomautus voi sisältää muuttujia, jotka arvioidaan InterSystems IRIS -puolella ennen kuin ne siirretään Pythonille. Tässä on muuttujan korvaamisen syntaksi:

  • ${class:method:arg1:...:argN} - menetelmäkutsu
  • #{expr} - suorittaa koodin ObjectScript-kielellä.

Esimerkki on saatavilla testiliiketoimintaprosessissa isc.py.test.Processesimerkiksi toiminnassa Correlation Matrix: Graph: f.savefig(r'#{process.WorkDirectory}SHOWCASE${%PopulateUtils:Integer:1:100}.png'). Tässä esimerkissä:

  • #{process.WorkDirectory} palauttaa objektin WorkDirectory-ominaisuuden process, joka on luokan esiintymä isc.py.test.Process nuo. nykyinen liiketoimintaprosessi.
  • ${%PopulateUtils:Integer:1:100} kutsuu menetelmää Integer luokka %PopulateUtils, ohittavat argumentit 1 и 100, palauttaa satunnaisen kokonaisluvun alueella 1...100.

Testaa liiketoimintaprosessia

Testituotanto ja testausliiketoimintaprosessi ovat oletusarvoisesti saatavilla Python Gatewayn osana. Voit käyttää niitä seuraavasti:

  1. Käyttöjärjestelmän terminaalissa suoritettava: pip install pandas matplotlib seaborn.
  2. Suorita InterSystems IRIS -päätteessä: do ##class(isc.py.test.CannibalizationData).Import() täyttää testitiedot.
  3. Lanseeraa tuotteet isc.py.test.Production.
  4. Lähetä pyyntötyyppi Ens.Request в isc.py.test.Process.

Katsotaan kuinka kaikki toimii yhdessä. avata isc.py.test.Process BPL-editorissa:

Python Gateway InterSystems IRIS:ssä

Koodin suoritus

Tärkein kutsu on Python-koodin suorittaminen:

Python Gateway InterSystems IRIS:ssä

Pyyntö käytetty isc.py.msg.ExecutionRequest, tässä ovat sen ominaisuudet:

  • Code - Python-koodi.
  • SeparateLines - jaetaanko koodi riveihin suorittamista varten. $c(10) (n) käytetään merkkijonojen erottamiseen. Huomaa, että EI ole suositeltavaa käsitellä koko viestiä kerralla, tämä toiminto on vain käsittelyä varten def ja vastaavat moniriviset lausekkeet. Oletus 0.
  • Variables on pilkuilla eroteltu luettelo muuttujista, jotka lisätään vastaukseen.
  • Serialization - Kuinka sarjoittaa muuttujat, jotka haluamme palauttaa. Vaihtoehdot: Str, Repr, JSON, Pickle и Dill, oletusarvo Str.

Meidän tapauksessamme asetamme vain ominaisuuden Code, jotta kaikki muut ominaisuudet käyttävät oletusarvojaan. Asetimme sen soittamalla process.GetAnnotation("Import pandas"), joka ajon aikana palauttaa huomautuksen muuttujan korvaamisen jälkeen. Lopuksi koodi import pandas as pd siirretään Pythonille. GetAnnotation voi olla hyödyllinen monirivisten Python-komentosarjojen hankkimisessa, mutta tälle koodin hankkimistavalle ei ole rajoituksia. Voit määrittää ominaisuuden Code millään sinulle sopivalla tavalla.

Muuttujien saaminen

Toinen mielenkiintoinen haaste käyttää isc.py.msg.ExecutionRequest - Correlation Matrix: Tabular:

Python Gateway InterSystems IRIS:ssä

Se laskee Python-puolen korrelaatiomatriisin ja poimii muuttujan corrmat takaisin InterSystems IRISiin JSON-muodossa asettamalla pyynnön ominaisuudet:

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

Näemme tulokset Visual Tracessa:

Python Gateway InterSystems IRIS:ssä

Ja jos tarvitsemme tätä arvoa BP:ssä, se voidaan saada näin: callresponse.Variables.GetAt("corrmat").

Tiedonsiirto

Seuraavaksi puhutaan tiedon siirtämisestä InterSystems IRIS:stä Pythoniin, kaikki tiedonsiirtopyynnöt toteuttavat rajapinnan isc.py.msg.DataRequest, joka tarjoaa seuraavat ominaisuudet:

  • Variable on Python-muuttuja, johon tiedot kirjoitetaan.
  • Type - muuttuva tyyppi: dataframe (pandas-tietokehys) tai list.
  • Namespace - alue, josta saamme tietoja. Muovipussi isc.py pitäisi olla saatavilla tällä alueella. Tämä voi olla alue, jolla ei ole tuotetukea.

Tämän käyttöliittymän perusteella toteutetaan 4 pyyntöluokkaa:

  • isc.py.msg.QueryRequest - asettaa omaisuutta Query SQL-kyselyn lähettämiseen.
  • isc.py.msg.ClassRequest - asettaa omaisuutta Class luokkatietojen välittämiseen.
  • isc.py.msg.TableRequest - asettaa omaisuutta Table taulukkotietojen välittämiseen.
  • isc.py.msg.GlobalRequest - asettaa omaisuutta Global siirtää tietoja maailmanlaajuisesti.

Katso testiprosessissa toimintaa RAWMissä isc.py.msg.QueryRequest näkyy toiminnassa.

Python Gateway InterSystems IRIS:ssä

Python-kontekstin tallentaminen/palauttaminen

Lopuksi voimme tallentaa Python-kontekstin InterSystems IRISiin, lähettääksesi tämän isc.py.msg.SaveRequest argumenteilla:

  • Mask — Vain muuttujat, jotka täyttävät maskin, tallennetaan. Tuettu * и ?. Esimerkki: "Data*, Figure?"... Oletus *.
  • MaxLength — Tallennetun muuttujan enimmäispituus. Jos muuttujan serialisointi on pidempi, se jätetään huomiotta. Aseta arvoksi 0 saadaksesi minkä tahansa pituiset muuttujat. Oletus $$$MaxStringLength.
  • Name — Kontekstin nimi (valinnainen).
  • Description — Kontekstin kuvaus (valinnainen).

Palauttaa Ens.StringResponse с Id tallennettu konteksti. Katso testiprosessissa toimintaa Save Context.

Aiheeseen liittyvä pyyntö isc.py.msg.RestoreRequest lataa kontekstin InterSystems IRIS:stä Pythoniin:

  • ContextId on kontekstin tunniste.
  • Clear — tyhjennä konteksti ennen palauttamista.

Jupyter Notebook

Jupyter Notebook on avoimen lähdekoodin verkkosovellus, jonka avulla voit luoda ja julkaista muistikirjoja, jotka sisältävät koodia, visualisointeja ja tekstiä. Python Gatewayn avulla voit tarkastella ja muokata BPL-prosesseja Jupyter-muistikirjana. Huomaa, että tavallinen Python 3 -suoritin on tällä hetkellä käytössä.

Tämä laajennus olettaa, että huomautukset sisältävät Python-koodia ja käyttävät toimintojen nimiä edeltävinä otsikoina. PythonGatewayn liiketoimintaprosesseja on nyt mahdollista kehittää Jupyter Notebookissa. Tässä on se, mikä on mahdollista:

  • Luo uusia liiketoimintaprosesseja
  • Poista liiketoimintaprosessit
  • Luo uusia aktiviteetteja
  • Muuta toimintaa
  • Poista aktiviteetit

Täällä demo video. Ja muutama kuvakaappaus:

Process Explorer

Python Gateway InterSystems IRIS:ssä

Prosessieditori

Python Gateway InterSystems IRIS:ssä

Asennus

  1. Tarvitset InterSystems IRIS 2019.2+.
  2. Asenna PythonGateway v0.8+ (vaatii vain isc.py.util.Jupyter, isc.py.util.JupyterCheckpoints и isc.py.ens.ProcessUtils).
  3. Päivitä ObjectScript-koodi arkistosta.
  4. Suorittaa do ##class(isc.py.util.Jupyter).Install() ja seuraa ohjeita.

Asiakirjat.

Tulokset

MLToolkit on työkalusarja, jonka tavoitteena on yhdistää malleja ja tapahtumaympäristöä niin, että rakennettuja malleja voidaan helposti käyttää suoraan liiketoimintaprosesseissasi. Python Gateway on osa MLToolkitiä ja tarjoaa integraation Python-kieleen, jolloin voit organisoida mitä tahansa Pythonissa (monien datatieteilijöiden pääympäristö) luotuja koneoppimisalgoritmeja, käyttää lukuisia valmiita kirjastoja luodaksesi nopeasti mukautuvaa, robottianalyyttistä tekoälyä / ML-ratkaisut InterSystems-alustalla IRIS.

viittaukset

MLT-työkalupaketti

MLToolkit-käyttäjäryhmä on yksityinen GitHub-arkisto, joka on luotu osana InterSystems-yritys GitHub-organisaatiota. Se on osoitettu ulkoisille käyttäjille, jotka asentavat, oppivat tai jo käyttävät MLToolkit-komponentteja, mukaan lukien Python Gateway. Ryhmällä on useita toteutettuja tapauksia (lähdekoodilla ja testitiedoilla) markkinoinnin, valmistuksen, lääketieteen ja monien muiden toimialojen aloilla. Liity ML Toolkit -käyttäjäryhmään lähettämällä lyhyt sähköpostiviesti seuraavaan osoitteeseen: [sähköposti suojattu] ja sisällytä kirjeessäsi seuraavat tiedot:

  • GitHub-käyttäjänimi
  • Organisaatio (työssä tai opiskelemassa)
  • Asema (todellinen asemasi organisaatiossasi, joko "opiskelija" tai "riippumaton").
  • Maa

Niille, jotka ovat lukeneet artikkelin ja jotka ovat kiinnostuneita InterSystems IRIS -alustasta tekoälyn ja koneoppimismekanismien kehittämiseen tai ylläpitämiseen, kutsumme sinut keskustelemaan mahdollisista yritystäsi kiinnostavista skenaarioista. Analysoimme helposti yrityksesi tarpeet ja laadimme yhdessä toimintasuunnitelman; AI/ML-asiantuntijaryhmämme yhteyssähköpostiosoite – [sähköposti suojattu].

Lähde: will.com

Lisää kommentti