Python Gateway InterSystems IRIS'is

See artikkel tutvustab Python Gateway't — kogukonna avatud lĂ€htekoodiga projekti InterSystems IRIS andmeplatvormil. See projekt vĂ”imaldab orkestreerida kĂ”iki masinĂ”ppe algoritme, mis on loodudPython'i keeles (peamine keskkond paljude andme teadlaste jaoks), ja kasutada mitmeid valmis raamatukogusid, et kiiresti luua kohandatud, robotiseeritud analĂŒĂŒtilisi AI/ML lahendusi InterSystems IRIS platvormil. Selles artiklis nĂ€itan, kuidas InterSystems IRIS suudab orkestreerida protsesse Python'is, tĂ”husalt teostada kahepoolselt andmeedastust ja luua intelligentseid Ă€riprotsesse.

Plaani

  1. Sissejuhatus.
  2. Tööriistakast.
  3. Installimine.
  4. API.
  5. Interoperatiivsuse.
  6. Jupyter Notebook.
  7. JĂ€reldused.
  8. Lingid.
  9. MLToolkit.

Sissejuhatus

Python on kĂ”rgtasemeline ĂŒldine programmeerimiskeel, mille eesmĂ€rk on suurendada arendaja tootlikkust ja koodi loetavust. Selles artiklite sarjas rÀÀgin Python'i keele rakendusvĂ”imalustest InterSystems IRIS platvormil, keskendudes selle artikli pĂ”hifookusele, mis on Python'i kasutamine masinĂ”ppemudelite loomiseks ja rakendamiseks.

MasinÔpe (ML) on kunstliku intelligentsuse meetodite klass, mille iseloomulikuks jooniks on mitte probleemi otsene lahendamine, vaid Ôppimine sarnaste probleemide lahendamise protsessis.

MasinĂ”ppe algoritmid ja mudelid muutuvad ĂŒha levinumaks. PĂ”hjuseid on mitmeid, kuid kĂ”ik taandub kĂ€ttesaadavusele, lihtsusele ja praktiliste tulemuste saavutamisele. Kas klasterdamine vĂ”i isegi nĂ€rvivĂ”rkude modelleerimine on uus tehnoloogia?

Kindlasti mitte, kuid praegu pole enam vajalik kirjutada sadu tuhandeid koodiridu, et kĂ€ivitada ĂŒks mudel, ning mudelite loomise ja rakendamise kulud vĂ€henevad jĂ€rjest enam.

Tööriistad arenevad — kuigi meil pole tĂ€iesti GUI-suunitlusega AI/ML tööriistu, toimub see areng, mida oleme kogenud paljude teiste infosĂŒsteemide klasside, nĂ€iteks BI (koodikirjutamisest GUI-seadistuslahenduste kasutamiseni) osas, ka AI/ML tööriistades. Oleme juba ĂŒletanud koodikirjutamisfaasi ja tĂ€na kasutame mudelite loomise ja Ă”petamise jaoks raamistikke.

Teised tÀiustused, nagu eelÔpetatud mudeli levitamise vÔimalus, kus lÔppkasutaja peab lihtsalt lÔpetama mudeli koolituse oma spetsiifiliste andmete pÔhjal, muudavad masinÔppe rakendamise alguse lihtsamaks. Need saavutused muudavad masinÔppe Ôppimise kergemaks nii spetsialistide kui ka ettevÔtete jaoks tervikuna.

Teisest kĂŒljest kogume ĂŒha rohkem andmeid. TĂ€nu sellisele ĂŒhtsele andmeplatvormile nagu InterSystems IRIS saab kogu see teave kohe ette valmistada ja kasutada masinĂ”ppe mudelite algandmetena.

Pilve ĂŒleminekuga on AI/ML projektide kĂ€ivitamine lihtsam kui kunagi varem. Me saame tarbida ainult neid ressursse, mida vajame. Veelgi enam, tĂ€nu pilveplatvormide pakutavale paralleelsusele saame sÀÀsta aega.

Aga mis on tulemused? Siin muutuvad asjad keerulisemaks. On palju tööriistu mudelite loomiseks, millest ma rÀÀgin edasi. Hea mudeli loomine ei ole lihtne, kuid mis edasi? Mudeli Ă€rikasutamine on samuti keeruline ĂŒlesanne. Probleemi juured peituvad analĂŒĂŒtiliste ja tehingukoormuste ning andmemudelite eristamises. Kui me koolitame mudelit, teeme seda tavaliselt ajalooliste andmete pĂ”hjal. Kuid mudeli koht on tehingute andmete töötlemises. Mis kasu on parimast petuskeemide avastamise mudelist, kui me kĂ€ivitame selle ainult ĂŒks kord pĂ€evas? Petturid on juba kaua enne seda raha endale saanud. Peame mudelit koolitama ajalooliste andmete peal, kuid peame seda rakendama ka reaalajas uutelt andmetelt, et meie Ă€ri protsessid saaksid toimida mudeli tehtud prognooside kohaselt.

ML Toolkit — tööriistade komplekt, mille eesmĂ€rk on just see: mudelite ja tehingukeskkonna ĂŒhendamine, et loodud mudeleid saaks hĂ”lpsasti kasutada otse teie Ă€ri protsessides. Python Gateway on osa ML Toolkitist ja tagab integreerimise Pythoniga (sarnaselt R Gateway’le, mis samuti ML Toolkit’i osa, tagab integreerimise R keelele).

Tööriistade komplekt

Enne kui jĂ€tkame, sooviksin tutvustada mĂ”ningaid Python’i tööriistu ja raamatukogusid, mida me hiljem kasutame.

Tehnoloogiad

  • Python on tĂ”lgendatav, kĂ”rgtasemeline ĂŒldotstarbeline programmeerimiskeel. KeelenĂ€itajaks on suur matemaatiliste, masinĂ”ppe ja AI raamatukogude kogum. Nagu ka ObjectScript, on see objektorienteeritud keel, kuid kĂ”ik mÀÀratakse dĂŒnaamiliselt, mitte staatiliselt. KĂ”ik on samuti objekt. Edasised artiklid eeldavad, et olete keelest hetkeks tuttav. Kui soovite alustada Ă”ppimist, soovitan alustada dokumentatsioonis.
  • Meie edasiste harjutuste jaoks installige Python 3.6.7 64 bit.
  • IDE: Kasutan PyCharm, kuid ĂŒldiselt nende palju. Kui kasutate Atelierit, on olemas Eclipse'i plugin Pythoni arendamiseks. Kui kasutate VS Code'i, on olemas Pythonile mĂ”eldud laiendus.
  • MĂ€rkmik: IDE asemel saate oma skripte kirjutada ja nendega jagada veebimĂ€rkmikes. KĂ”ige populaarsem neist on Jupyter.

Raamatukogud

Siin on (mittetÀielik) nimekiri masinÔppe raamatukogudest:

  • Numpy — tĂ€psete arvutuste pĂ”hipakett.
  • Pandas — kĂ”rge jĂ”udlusega andmestruktuurid ja andmeanalĂŒĂŒsi tööriistad.
  • Matplotlib — diagrammide loomine.
  • Seaborn — andmete visualiseerimine, mis pĂ”hineb matplotlibil.
  • Sklearn — masinĂ”ppe meetodid.
  • XGBoost — masinĂ”ppe algoritmid, mis toetuvad gradientide tĂ”usule (Gradient Boosting).
  • Gensim — NLP.
  • Keras — nĂ€rvivĂ”rgud.
  • Tensorflow — masinĂ”ppe mudelite loomise platvorm.
  • PyTorch — masinĂ”ppe mudelite loomise platvorm, mis on suunatud Pythonile.
  • Nyoka — PMML erinevatest mudelitest.

AI/ML tehnoloogiad aitavad muuta Àri tÔhusamaks ja paindlikumaks. Veelgi enam, tÀnapÀeval muutuvad need tehnoloogiad arendamisel ja rakendamisel lihtsamaks. Alustage AI/ML-tehnoloogiate uurimist ja Ôppige, kuidas need vÔivad aidata teie organisatsioonil kasvada.

Installeerimine

On mitmeid viise Python Gateway'i installimiseks ja kasutamiseks:

  • OȘ
    • Windows
    • Linux
    • Mac
  • Docker
    • Kasutage DockerHubi pilti
    • Looge oma oma pilt

SĂ”ltumata installimisviisist vajate allika koodi. Ainult koht, kust koodi alla laadida, on vĂ€ljaande leht. Seal on testitud stabiilsed vĂ€ljalasked, lihtsalt vĂ”tke viimane. Hetkel on see 0.8, kuid aja jooksul tuleb uusi versioone. Ärge kloonige/ĂŒles laadige hoidlat, laadige alla viimane vĂ€ljalase.

OȘ

Kui installite Python Gateway'i operatsioonisĂŒsteemi, peate esmalt (sĂ”ltumata operatsioonisĂŒsteemist) Python'i installima. Selleks:

  1. Installige Python 3.6.7 64 bit. Soovitatav on installida Python vaikekausta.
  2. Installige moodul dill: pip install dill.
  3. Laadige alla ObjectScript kood (st. do $system.OBJ.ImportDir("C:InterSystemsReposPythoniscpy", "*.cls", "c",,1)) igasse piirkonda, kus on tooted. Kui soovite, et olemasolev piirkond toetaks tooteid, suhelge: write ##class(%EnsembleMgr).EnableNamespace($Namespace, 1).
  4. Paigutage callout DLL/SO/DYLIB kausta bin teie InterSystems IRIS instantsist. Raamatukogufail peab olema saadaval teel, mida tagastatakse 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 parameeter PythonLib. Samuti on Readme jaotises TÔrkeotsing.

Mac

  1. Praegu toetatakse ainult Python 3.6.7 versiooni aadressilt Python.org. Kontrollige muutujat PATH.

Kui olete muutnud keskkonnamuutujate vÀÀrtusi, kÀivitage oma InterSystems toode uuesti.

Docker

Konteinerite kasutamine pakub mitmeid eeliseid:

  • Üksus
  • TĂ”husus
  • Isolatsioon
  • Kerged
  • Muuda

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

KÔik Python Gateway ehitused pÔhinevad praegu konteineritel. 2019.4.

Valmis pilt

KÀitage: docker run -d -p 52773:52773 --name irispy intersystemscommunity/irispy-community:latest, et laadida ja kÀivitada Python Gateway InterSystems IRIS Community Editioni koosseisus. Nii ongi.

Looge oma oma pilt

Docker pildi ehitamiseks kÀivitage juurkataloogis: docker build --force-rm --tag intersystemscommunity/irispy:latest ..
Vaikimisi koostis luuakse pildi pÔhjal store/intersystems/iris-community:2019.4.0.383.0, kuid saate seda muuta, seadistades muutuja IMAGE.
InterSystems IRIS-ist koostamiseks kasutage: `docker build —build-arg IMAGE=store/intersystems/iris:2019.4.0.383.0 —force-rm —tag intersystemscommunity/irispy:latest`.

PÀrast seda saate kÀivitada Docker-pildi:

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

Kui kasutate InterSystems IRIS Community Edition'i pÔhjal loodud pilti, ei pruugi te vÔtit mÀÀrata.

Kommentaarid

  • Testimisprotsess isc.py.test.Process salvestab mitmeid pilte ajutisse katalooge. VĂ”ib-olla soovite muuta selle tee monteeritud kataloogiks. Selleks muutke seade WorkingDir nĂ€idates monteeritud katalooge.
  • Terminali juurde pÀÀsemiseks kasutage: docker exec -it irispy sh.
  • JuurdepÀÀs SĂŒsteemi Halduse Portaalile logi kaudu SuperUser/SYS.
  • Konteinri peatamiseks kasutage: docker stop irispy && docker rm --force irispy.

Installatsiooni kontroll

PÀrast Python Gateway installimist on mÔistlik kontrollida, et see töötab. KÀivitage see kood InterSystems IRIS terminalis:

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

Tulemus peab olema vĂ€ljundis Tere — Pythoni muutuja vÀÀrtus x. Kui tagastatud staatuse sc on viga vĂ”i var on tĂŒhi, kontrollige Readme — tĂ”rkeotsingu jaotis.

API

Python Gateway on paigaldatud ja teil on kinnituseks, et see töötab. On aeg alustamiseks!
Peamine liides Pythonile on isc.py.Main. See pakub jÀrgmisi meetodigruppide (kÔik tagastavad %Status):

  • Koodi tĂ€itmine
  • Andmete edastamine
  • Abiprogrammid

Koodi tÀitmine

Need meetodid vÔimaldavad tÀita suvalist Python koodi.

SimpleString

SimpleString — see on pĂ”hi meetod. See vĂ”tab 4 valikulist argumenti:

  • code — tĂ€idetav koodirida. Rida vahetusmĂ€rk: $c(10).
  • returnVariable — muutuja nimi, mis tagastatakse.
  • serialiseerimise — kuidas serialiseerida returnVariable. 0 — string (vaikimisi), 1 — repr.
  • tulemus — ByRef viide muutuja, kuhu vÀÀrtus salvestatakse returnVariable.

Ülal me tĂ€itsime:

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

Selles nÀites mÀÀrame Pythoni muutuja x vÀÀrtus Tere ja soovime tagastada Python'i muutuja x ObjectScript muutuja var.

ExecuteCode

ExecuteCode on turvalisem ja vÀhem piiratud alternatiiv SimpleString.
InterSystems IRIS platvormil on stringid piiratud 3 641 144 mÀrgiga, ning kui soovite kÀivitada pikema koodi, peate kasutama vooge.
VÔetakse vastu kaks argumenti:

  • code — string vĂ”i Python koodivoog tĂ€itmiseks.
  • variable — (valikuline) mÀÀrab tulemuse code selle Python muutuja.

Kasutamine:

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

Selles nÀites korrutame 2 ja 3 ning salvestame tulemuse Python muutuja. y.

Andmete edastamine

Edastage andmeid Pythonisse ja tagasi.

Python -> InterSystems IRIS

InterSystems IRIS-is on 4 viisi, kuidas saada Python muutuja vÀÀrtus, olenevalt vajatust serialiseerimisest:

  • String lihtsate andmetĂŒĂŒpide ja silumise jaoks.
  • Repr lihtsate objektide hoidmiseks ja silumise jaoks.
  • JSON andmete lihtsaks kĂ€sitlemiseks InterSystems IRIS pool.
  • Pickle objektide salvestamiseks.

Need meetodid vÔimaldavad saada muutujaid Pythonist stringidena vÔi voogudena.

  • GetVariable(variable, serialization, .stream, useString) — saada serialiseerimise muutuja variable ĂŒhes stream. Kui useString kui 1 ja serialiseerimine asetatakse stringi, siis tagastatakse string, mitte voog.
  • GetVariableJson(variable, .stream, useString) — saada muutuja JSON serialiseerimine.
  • GetVariablePickle(variable, .stream, useString, useDill) — saada Pickle (vĂ”i Dill) serialiseerimine muutuja.

PĂŒĂŒame saada meie muutuja y.

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

InterSystems IRIS -> Python

Laadime andmeid InterSystems IRIS-ist Pythonisse.

  • ExecuteQuery(query, variable, type, namespace) — loob andmeseti (pandas dataframe vĂ”i loend) SQL pĂ€ringu pĂ”hjal ja seob selle Python muutuja kĂŒlge variable. Pakett isc.py peab olema ulatuses namespace — seal kĂ€ivitatakse pĂ€ring.
  • ExecuteGlobal(global, variable, type, start, end, mask, labels, namespace) — laadib globaalset andmestikku globaalne alates alamskripti start kuni lĂ”pp Pythonisse muutuja tĂŒĂŒbina type: loend, vĂ”i pandas dataframe. Valikargumendide kirjeldus mask ja labels on saadaval klassi dokumentatsioonis ja repos Andmete ĂŒlekande dokumendid.
  • ExecuteClass(class, variable, type, start, end, properties, namespace) — laadib klassi andmeid class ID-lt start kuni lĂ”pp Pythonisse muutuja tĂŒĂŒbina type: loend, vĂ”i pandas dataframe. properties — omaduste loend (eraldaja – koma), mis tuleb laadida andmesetti. Toetatakse maske * ja ?. Vaikimisi — * (kĂ”ik omadused). Omadust %%CLASSNAME ei arvestata.
  • ExecuteTable(table, variable, type, start, end, properties, namespace) — laadib tabeli andmed tabel ID-lt start kuni lĂ”pp Pythonisse.

ExecuteQuery — universaalne (igal kehtival SQL-pĂ€ringul on lubatud edastada Pythonisse). Kuid ExecuteGlobal ja selle ĂŒmbrikud ExecuteClass ja ExecuteTable töötavad teatud piirangutega. Need on palju kiirem (3-5 korda kiirem ODBC draiveritest ja 20 korda kiirem ExecuteQuery). TĂ€iendav teave on Andmete ĂŒlekande dokumendid.
KÔik need meetodid toetavad andmete edastamist mis tahes piirkonnast. Pakett isc.py peab olema sihtpiirkonnas kÀttesaadav.

ExecuteQuery

ExecuteQuery(request, variable, type, namespace) — edastamine tulemusi mis tahes regulaarse SQL-pĂ€ringu puhul Pythonis. See on aeglasim andmete edastamise meetod. Kasutage seda, kui ExecuteGlobal ja selle mĂ€hiseid pole saadaval.

Argumentide loetelu:

  • query — sql pĂ€ring.
  • variable — Python muutuja nimi, kuhu andmed kirjutatakse.
  • type — loend vĂ”i Pandas dataframe.
  • namespace — piirkond, milles pĂ€ringut tĂ€idetakse.

ExecuteGlobal

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

Argumentide loetelu:

  • globaalne — globaali nimi ilma ^
  • variable — Python muutuja nimi, kuhu andmed kirjutatakse.
  • type — loend vĂ”i Pandas dataframe.
  • start — globaalide esimene alam-skript. Kohustuslik %Integer.
  • lĂ”pp — globaalide viimane alam-skript. Kohustuslik %Integer.
  • mask — globaalide vÀÀrtuste mask. Mask vĂ”ib olla lĂŒhem kui globaalide vĂ€ljade arv (sellisel juhul jĂ€tetakse lĂ”pu pooled vĂ€lja). Kuidas maski vormindada:
    • + edasta vÀÀrtus nii nagu see on.
    • - jĂ€ta vÀÀrtus vahele.
    • b — Loogiline tĂŒĂŒp (0 — False, kĂ”ik muu — True).
    • d — KuupĂ€ev (alates $horolog, Windowsis alates 1970, Linuxis alates 1900).
    • t — Aeg ($horolog, sekundid pĂ€rast keskööd).
    • m — Aja temp (aasta-kuud-pĂ€ev tund:minut:sekund formaadi string).
  • labels — %Loend veergude nimed. Esimene element — alam-skripti nimi.
  • namespace — piirkond, milles pĂ€ringut tĂ€idetakse.

ExecuteClass

MĂ€his ĂŒle ExecuteGlobal. Valiku klassi mÀÀratlemisel valmistab ette vĂ€ljakutse ExecuteGlobal ja kutsub selle vĂ€lja.

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

Argumentide loetelu:

  • class — klassi nimi
  • variable — Python muutuja nimi, kuhu andmed kirjutatakse.
  • type — loend vĂ”i Pandas dataframe.
  • start — algne Id.
  • lĂ”pp — lĂ”pp Id
  • properties — omaduste loend (eraldaja – koma), mis tuleb laadida andmesetti. Toetatakse maske * ja ?. Vaikimisi — * (kĂ”ik omadused). Omadust %%CLASSNAME ei arvestata.
  • namespace — piirkond, milles pĂ€ringut tĂ€idetakse.

KĂ”ik atribuudi vÀÀrtused edastatakse sellistena nagu nad on, vĂ€lja arvatud tĂŒĂŒbid %Date, %Time, %Boolean ja %TimeStamp — need konverteeritakse vastavatesse Python klassidesse.

ExecuteTable

MĂ€his ĂŒle ExecuteClass. TĂ”lgib tabeli nime klassi nimeks ja kutsub selle vĂ€lja ExecuteClass. Signatuur:

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

Argumentide loetelu:

  • tabel — tabeli nimi.
    KÔik muud argumendid edastatakse sellistena nagu nad on ExecuteClass.

MĂ€rkmed

  • ExecuteGlobal, ExecuteClass ja ExecuteTable töötab sama kiiresti.
  • ExecuteGlobal 20 korda kiiremini kui ExecuteQuery suurtel andmekogudel (edastusaeg > 0.01 sekundit).
  • ExecuteGlobal, ExecuteClass ja ExecuteTable töötavad globaalide puhul, millel on jĂ€rgmine struktuur: ^global(key) = $lb(prop1, prop2, ..., propN) kus key — tĂ€isarv.
  • Kuna ExecuteGlobal, ExecuteClass ja ExecuteTable toetatud vÀÀrtuste vahemik %Date vastab vahemikule mktime ja sĂ”ltub OS-ist (windows: 1970-01-01, linux 1900-01-01, mac). Kasutage %TimeStampselle vahemiku vĂ€ljaspool andmete edastamiseks vĂ”i kasutage pandas dataframe'i, kuna see piirang kehtib ainult nimekirja kohta.
  • Kuna 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 globaalne muutuja edastatakse, mÀÀratakse vÀljade nimed kÀsitsi
// globalKey - subscripte nimi
set labels = $lb("globalKey", "Name", "DOB", "TS", "RandomTime", "AgeYears", "AgeDecimal", "AgeDouble", "Bool")

// mask sisaldab 1 elementi vÀhem kui labels, kuna "globalKey" - subscripte nimi
// JÀtame %%CLASSNAME vÀlja
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)

Kutsuge meetod do ##class(isc.py.test.Person).Test() nÀha, kuidas kÔik andmeedastusmeetodid töötavad.

Abimeetodid

  • GetVariableInfo(variable, serialization, .defined, .type, .length) — saada teavet muutujast: kas see on mÀÀratletud, klass ja serialiseerimise pikkus.
  • GetVariableDefined(variable, .defined) — kas muutuja on mÀÀratletud.
  • GetVariableType(variable, .type) — saada muutujaklass.
  • GetStatus() — saada ja eemaldada viimane erand Pythonis.
  • GetModuleInfo(module, .imported, .alias) — saada mooduli muutujat ja impordi staatust.
  • GetFunctionInfo(function, .defined, .type, .docs, .signature, .arguments) — saada funktsiooni teavet.

Interoperatiivsuse

Olete Ă”ppinud kutsuma Python Gateway'd terminalist, nĂŒĂŒd alustame selle kasutamist tootmises. Koostoime Pythoniga sellises reĆŸiimis pĂ”hineb isc.py.ens.Operation. See vĂ”imaldab meil:

  • TĂ€itma koodi Pythonis
  • Salvestama/taastama Python konteksti
  • Laadida ja saada andmeid Pythonist

PÔhimÔtteliselt on Python operatsioon see, mis katab isc.py.Main. Operatsioon isc.py.ens.Operation annab vÔimaluse suhelda Python protsessiga InterSystems IRISi tootmisest. 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. Analoog isc.py.msg.ExecutionRequest, kuid vĂ”tab ja tagastab vooge stringide asemel.
  • 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 globaalsetele / klassidele / tabelitele. Tagastab Ens.Response.
  • isc.py.msg.SaveRequest Python konteksti salvestamiseks. Tagastab Ens.StringResponse koos konteksti tuvastajaga.
  • isc.py.msg.RestoreRequest Python konteksti taastamiseks.

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

    • Initializer — klassi valik, mis realiseerib liidest isc.py.init.Abstract. Seda saab kasutada funktsioonide, moodulite, klasside jne laadimiseks. Seda tĂ€idetakse vaid ĂŒks kord protsessi kĂ€ivitamisel.
    • PythonLib — (ainult Linuxi jaoks) kui nĂ€ete laadimise ajal vigu, seadke selle vÀÀrtus libpython3.6m.so vĂ”i isegi Python teegile tĂ€is tee.

Äriprosesside loomine

On olemas kaks klassi, mis lihtsustavad Àriprotsesside arendamist:

  • isc.py.ens.ProcessUtils vĂ”imaldab vĂ€lja tĂ”mmata annotatsioone tegevustest muutuja asendamisega.
  • isc.py.util.BPEmulator vĂ”imaldab hĂ”lpsasti testida Ă€riprotsesse Pythoniga. See suudab kĂ€ivitada Ă€riprotsessi (osad Python keeles) kĂ€imasolevas protsessis.

Muudatuste asendamine

KĂ”ik Ă€riprotsessid, mis pĂ€rinevad isc.py.ens.ProcessUtils, saavad kasutada meetodit GetAnnotation(name) aktiivsuse annotatsiooni vÀÀrtuse saamiseks tema nimetuse jĂ€rgi. Aktiivsuse annotatsioon vĂ”ib sisaldada muutujaid, mis arvutatakse InterSystems IRIS'i pool enne edastamist Pythonisse. Siin on muutuja asendamise sĂŒntaks:

  • ${class:method:arg1:...:argN} — meetodi vĂ€ljakutse
  • #{expr} — koodi tĂ€itmine ObjectScripti keeles.

NÀidis on saadaval testimisprotsessis isc.py.test.Process, nÀiteks aktiivsuses Korrelatsioonimatrix: Graaf: f.savefig(r'#{process.WorkDirectory}SHOWCASE${%PopulateUtils:Integer:1:100}.png'). Selles nÀites:

  • #{process.WorkDirectory} tagastab objekti WorkDirectory omaduse processnĂ€iteks praeguse Ă€riprotsessi. isc.py.test.Process ${%PopulateUtils:Integer:1:100}
  • ${%PopulateUtils:Integer:1:100} kutsub vĂ€lja meetodi Integer klass %PopulateUtils, edastades argumendid 1 ja 100, tagastades juhusliku tĂ€isarvu vahemikus 1...100.

Testimisprotsess

Testtooted ja testimisprotsess on vaikimisi saadaval Python Gateway'i osana. Nende kasutamiseks:

  1. KĂ€ivitage terminalis: pip install pandas matplotlib seaborn.
  2. InterSystems IRIS terminalis kÀivitage: do ##class(isc.py.test.CannibalizationData).Import() testandmete tÀitmiseks.
  3. KĂ€ivitage toode isc.py.test.Production.
  4. Saada pĂ€ringutĂŒĂŒpi Ens.Request ĂŒhes isc.py.test.Process.

Vaadake, kuidas see kÔik koos töötab. Avage isc.py.test.Process BPL redigeerijas:

Python Gateway InterSystems IRIS'is

Koodi tÀitmine

KĂ”ige olulisem vĂ€ljakutse — Python koodi tĂ€itmine:

Python Gateway InterSystems IRIS'is

Kasutatakse pÀringut isc.py.msg.ExecutionRequest, siin on selle omadused:

  • Kood — Pythoni kood.
  • SeparateLines — kas jagada kood ridadeks tĂ€itmiseks. $c(10) (n) kasutatakse ridade eraldamiseks. Pange tĂ€hele, et EI SOOVITATA tegeleda sĂ”numiga korraga, see funktsioon on mĂ”eldud ainult töötlemiseks def ja sarnaste mitmerealiste vĂ€ljendite jaoks. Vaikimisi 0.
  • Muutujad — komadega eraldatud muutujate loend, mis lisatakse vastusele.
  • Serialization — Kuidas serialiseerida muutujad, mille soovime tagasi anda. Valikud: Str, Repr, JSON, Pickle ja Dill, vaikimisi Str.

Meie juhul mÀÀrame ainult omaduse Kood, seega kasutavad kĂ”ik teised omadused vaikeseadeid. MÀÀrame selle kutsumisega process.GetAnnotation("Import pandas"), mis jooksutamise ajal tagastab annotatsiooni pĂ€rast muutujate asendamist. LĂ”puks, kood import pandas as pd edastatakse Pythonile. GetAnnotation vĂ”ib olla kasulik mitmerealiste Python skriptide saamiseks, kuid ei ole mingeid piiranguid selle meetodi kohta koodi saamisel. VĂ”ite mÀÀrata omaduse Kood igaĂŒhel, kes teile sobib.

Muutujate saamine

Veel ĂŒks huvitav vĂ€ljakutse kasutades isc.py.msg.ExecutionRequest — Correlation Matrix: Tabular:

Python Gateway InterSystems IRIS'is

See on Pythonis korrelatsioonimatriitsi arvutamine ja muutuja vÀlja tÔmbamine corrmat InterSystems IRIS-i tagasi formatiseeritud JSON-i kujul, seadistades pÀringu omadused:

  • Muutujad: "corrmat"
  • Serialization: "JSON"

Me saame tulemusi nÀha Visual Trace'is:

Python Gateway InterSystems IRIS'is

Ja kui me seda vÀÀrtust vajame, saame selle kÀtte nii: callresponse.Variables.GetAt("corrmat").

Andmete edastamine

JÀrgnevalt rÀÀgime andmete edastamisest InterSystems IRIS-ist Pythonisse, kÔik andmete edastamise pÀringud rakendavad liidest isc.py.msg.DataRequest, mis pakub jÀrgmisi omadusi:

  • Variable — Python muutuja, kuhu kirjutatakse andmed.
  • TĂŒĂŒp — muutuja tĂŒĂŒp: dataframe (pandas dataframe) vĂ”i loend.
  • Namespaces — ala, kust andmed saadakse. Pakett isc.py peab olema sellel alal kergesti ligipÀÀsetav. See vĂ”ib olla ala, mis ei toeta tooteid.

Selle liidese alusel on ellu viidud 4 pÀringu klassi:

  • isc.py.msg.QueryRequest — seadke omadus PĂ€ring SQL pĂ€ringu edastamiseks.
  • isc.py.msg.ClassRequest — seadke omadus Class andmete klassi edastamiseks.
  • isc.py.msg.TableRequest — seadke omadus Tabela tabeli andmete edastamiseks.
  • isc.py.msg.GlobalRequest — seadke omadus Global globaalsete andmete edastamiseks.

Testimise protsessi kÀigus vaadake aktiivsust RAW, kus isc.py.msg.QueryRequest nÀidatud tegevuses.

Python Gateway InterSystems IRIS'is

Python konteksti salvestamine / taastamine

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

  • Mask — Salvestatakse ainult mustrile vastavad muutujad. Toetatud on * ja ?. NĂ€ide: "Data*, Figure?". Vaikimisi *.
  • MaxLength — Salvestatava muutuja maksimaalne pikkus. Kui muutuja serialiseerimine ĂŒletab seda, jĂ€etakse see tĂ€helepanuta. Seadke 0, et lubada muutujaid mis tahes pikkuses. Vaikimisi $$$MaxStringLength.
  • Nimi — Konteksti nimi (valikuline).
  • Kirjeldus — Konteksti kirjeldus (valikuline).

Tagastab Ens.StringResponse koos Id salvestatud konteksti. Testimisprotsessi kÀigus vaadake aktiivsust Salvesta kontekst.

Sobilik pÀring isc.py.msg.RestoreRequest laadib konteksti InterSystems IRIS-st Pythonisse:

  • ContextId — konteksti identifikaator.
  • Puhasta — puhastada kontekst enne taastamist.

Jupyter Notebook

Jupyter Notebook — see on avatud lĂ€htekoodiga veebirakendus, mis vĂ”imaldab luua mĂ€rkmikke, mis sisaldavad koodi, visualiseerimisi ja teksti ning neid avaldada. Python Gateway vĂ”imaldab vaadata ja redigeerida BPL-protsesse Jupyter Notebook'i kujul. Pange tĂ€hele, et hetkel kasutatakse tavapĂ€rast Python 3 executorit.

See laiendus eeldab, et annotatsioonid sisaldavad Python koodi ja kasutavad aktiivsuste nimesid eelnevate pealkirjadena. NĂŒĂŒd on vĂ”imalik arendada Ă€ri-protsesse PythonGateway Jupyter Notebookis. Siin on, mis on vĂ”imalik:

  • Luua uusi Ă€ri protsesse
  • Kustutada Ă€ri protsesse
  • Luua uusi tegevusi
  • Muuta tegevusi
  • Kustutada tegevusi

Siin on demo-video. Ja mÔned ekraanipildid:

Protsesside juhend

Python Gateway InterSystems IRIS'is

Protsessi redaktor

Python Gateway InterSystems IRIS'is

Installeerimine

  1. Teil on vaja InterSystems IRIS 2019.2+.
  2. Installige PythonGateway v0.8+ (nÔutav ainult isc.py.util.Jupyter, isc.py.util.JupyterCheckpoints ja isc.py.ens.ProcessUtils).
  3. Uuendage ObjectScript koodi hoidlast.
  4. Sooritage do ##class(isc.py.util.Jupyter).Install() ja jÀrgige juhiseid.

Dokumentatsioon.

JĂ€reldused

MLToolkit on tööriistade komplekt, mille eesmĂ€rk on ĂŒhendada mudelid ja tehingute keskkond, et loodud mudeleid oleks lihtne kasutada otse teie Ă€riprotsessides. Python Gateway on osa MLToolkit'ist ja pakub integreerimist Python'i keelega, vĂ”imaldades orkestreerida mis tahes masinĂ”ppe algoritme, mis on loodud Python'i keeles (peamine keskkond paljude andeteadlaste jaoks), kasutades mitmeid valmis raamatukogusid kiireks kohandatud, automatiseeritud analĂŒĂŒtiliste AI/ML lahenduste loomiseks InterSystems IRIS platvormil.

Lingid

MLToolkit

MLToolkit kasutajagrupp on privaatne GitHub-i reposteitor, mis on loodud osana InterSystems'i ettevĂ”tte GitHub-organisatsioonist. See on suunatud vĂ€listele kasutajatele, kes installivad, uurivad vĂ”i juba kasutavad MLToolkit'i komponente, sealhulgas Python Gateway'd. Grupis on saadaval mitmeid rakendatud juhtumeid (koos lĂ€htekoodi ja testandmetega) turunduse, tootmise, meditsiini ja paljude teiste valdkondade jaoks. ML Toolkit kasutajagruppi liitumiseks saatke palun lĂŒhike e-kiri jĂ€rgmistel andmetel: MLToolkit@intersystems.com ja mĂ€rkige oma kirjas jĂ€rgmised andmed:

  • GitHubi kasutajanimi
  • Organisatsioon (kus te töötate vĂ”i Ă”pite)
  • Ametikoht (teie tegelik ametikoht teie organisatsioonis, vĂ”i "ÜliĂ”pilane", vĂ”i "Iseseisev").
  • Riik

Neile, kes lugesid artiklit ja on huvitatud InterSystems IRISi vĂ”imalustest tehisintellekti ja masinĂ”ppe mehhanismide arendamise vĂ”i majutamise platvormina, pakume vĂ€lja vĂ”imalused arutada teie ettevĂ”ttele huvi pakkuvaid stsenaariume. Oleme valmis analĂŒĂŒsima teie ettevĂ”tte vajadusi ja ĂŒhiselt mÀÀrama tegevusplaani; meie AI/ML ekspertgrupi kontaktmeiliaadress on MLToolkit@intersystems.com.

Allikas: habr.com

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster