Å is raksts ir veltÄ«ts Python Gateway ā kopienas projektam ar atvÄrtÄ koda kodu datu platformai InterSystems IRIS. Å is projekts ļauj orÄ·estrÄt jebkÄdus maŔīnmÄcīŔanÄs algoritmus, kas izstrÄdÄti Python valodÄ (galvenÄ vide daudziem datu zinÄtniekiem), izmantot daudzÄs gatavÄs bibliotÄkas, lai Ätri izstrÄdÄtu pielÄgotus, robota analÄ«tiskos AI/ML risinÄjumus uz InterSystems IRIS platformas. Å ajÄ rakstÄ es parÄdīŔu, kÄ InterSystems IRIS var orÄ·estrÄt procesus Python valodÄ, efektÄ«vi nodroÅ”inÄt divvirzienu datu pÄrsÅ«tīŔanu un radÄ«t inteliÄ£entus biznesa procesus.
PlÄns
- Ievads.
- Rīki.
- InstalÄcija.
- API.
- InteroperabilitÄte.
- Jupyter Notebook.
- SecinÄjumi.
- Saites.
- MLToolkit.
Ievads
Python ir augsta lÄ«meÅa vispÄrÄjas lietoÅ”anas programmÄÅ”anas valoda, kas vÄrsta uz izstrÄdÄtÄja produktivitÄtes un koda lasÄmÄ«bas paaugstinÄÅ”anu. Å ajÄ rakstu sÄrijÄ es pastÄstīŔu par Python valodas pielietoÅ”anas iespÄjÄm InterSystems IRIS platformÄ, pievÄrÅ”oties tam, kÄ Python kalpo kÄ valoda maŔīnmÄcīŔanÄs modeļu izstrÄdei un pielietoÅ”anai.
MaŔīnmÄcīŔanÄs (ML) ir mÄkslÄ«gÄ intelekta metožu klase, kuras raksturÄ«ga pazÄ«me ir nevis tieÅ”a uzdevuma risinÄÅ”ana, bet gan apmÄcÄ«ba, risinot daudzus lÄ«dzÄ«gus uzdevumus.
MaŔīnmÄcīŔanÄs algoritmi un modeļi kļūst arvien plaÅ”Äk izmantoti. Iemeslu tam ir daudz, bet viss ir saistÄ«ts ar pieejamÄ«bu, vienkÄrŔību un praktisko rezultÄtu sasniegÅ”anu. Vai klasterizÄcija vai pat neironu tÄ«klu modelÄÅ”ana ir jauna tehnoloÄ£ija?
Protams, ka nÄ, bet Å”obrÄ«d nav nepiecieÅ”ams uzrakstÄ«t simtiem tÅ«kstoÅ”u koda rindu, lai palaistu vienu modeli, un izmaksas modeļu izstrÄdÄ un pielietoÅ”anÄ kļūst arvien mazÄkas.
RÄ«ki attÄ«stÄs ā kamÄr mums nav pilnÄ«bÄ GUI orientÄtu AI/ML rÄ«ku, tÄs progresu, ko mÄs esam novÄrojuÅ”i ar daudziem citiem informÄcijas sistÄmu veidiem, piemÄram, BI (no koda rakstīŔanas lÄ«dz ietvaru un GUI orientÄtu konfigurÄjamu risinÄjumu izmantoÅ”anai), novÄrojam arÄ« AI/ML rÄ«ku izstrÄdÄ. MÄs jau esam pÄrvarÄjuÅ”i koda rakstīŔanas posmu un Å”odien izmantojam ietvarus modeļu izstrÄdei un apmÄcÄ«bai.
Citi uzlabojumi, piemÄram, iespÄja izplatÄ«t iepriekÅ” apmÄcÄ«tas modeļus, kad gala lietotÄjam vienkÄrÅ”i jÄpabeidz modeļa apmÄcÄ«ba uz viÅa specifiskajiem datiem, arÄ« atvieglo maŔīnmÄcīŔanÄs uzsÄkÅ”anu. Å ie sasniegumi ievÄrojami atvieglo maŔīnmÄcīŔanÄs apgūŔanu kÄ speciÄlistiem, tÄ arÄ« uzÅÄmumiem kopumÄ.
No otras puses, mÄs vÄcam arvien vairÄk datu. Pateicoties vienotai datu platformai, piemÄram, InterSystems IRIS, visa Ŕī informÄcija var tÅ«lÄ«tÄji tikt sagatavota un izmantota kÄ izejas dati maŔīnmÄcīŔanÄs modeļiem.
PÄrejot uz mÄkoni, AI/ML projektu uzsÄkÅ”ana kļūst vieglÄka nekÄ jebkad agrÄk. MÄs varam patÄrÄt tikai tos resursus, kas mums nepiecieÅ”ami. TurklÄt, pateicoties paralelizÄcijai, ko piedÄvÄ mÄkonÄ« balstÄ«tas platformas, mÄs varam ietaupÄ«t laiku.
Bet kÄ ar rezultÄtiem? Å eit viss kļūst sarežģītÄk. Ir daudz rÄ«ku modeļu izveidei, par kuriem es runÄÅ”u tÄlÄk. Izveidot labu modeli nav viegli, bet kas tÄlÄk? GÅ«t peļÅu no modeļa izmantoÅ”anas biznesÄ arÄ« nav vienkÄrÅ”a uzdevums. ProblÄmas sakne slÄpjas analÄ«tisko un transakciju slodžu un datu modeļu nodalÄ«jumÄ. Kad mÄs apmÄcÄm modeli, mÄs to parasti darÄm uz vÄsturiskajiem datiem. TaÄu vieta izveidotajam modelim ir transakciju datu apstrÄdÄ. Kas ir labÄkÄ krÄpniecisko transakciju atklÄÅ”anas modeļa labums, ja mÄs to izpildÄm reizi dienÄ? KrÄpnieki jau sen ir aizbÄguÅ”i ar naudu. Mums jÄapmÄca modelis uz vÄsturiskajiem datiem, bet mums arÄ« jÄpiemÄro tas reÄlÄ laikÄ uz jauniem ienÄkoÅ”ajiem datiem, lai mÅ«su biznesa procesi varÄtu darboties saskaÅÄ ar modeļa veiktajiem prognozÄm.
ML Toolkit ir rÄ«ku kopums, kura mÄrÄ·is ir tieÅ”i tas: apvienot modeļus un transakciju vidi, lai izveidotie modeļi bÅ«tu viegli izmantojami tieÅ”i jÅ«su biznesa procesos. Python Gateway ir daļa no ML Toolkit un nodroÅ”ina integrÄciju ar Python valodu (analogiski tam, kÄ R Gateway, kas ir daļa no ML Toolkit, nodroÅ”ina integrÄciju ar R valodu).
Rīku kopums
Pirms turpinÄÅ”anas es vÄlÄtos aprakstÄ«t dažus rÄ«kus un bibliotÄkas Python, kuras mÄs izmantosim vÄlÄk.
Tehnoloģijas
- Python ir interpretÄjama, augsta lÄ«meÅa vispÄrÄjÄs nozÄ«mes programmÄÅ”anas valoda. GalvenÄ valodas priekÅ”rocÄ«ba ir liela matemÄtisko, ML un AI bibliotÄku krÄtuve. TÄpat kÄ ObjectScript, tÄ ir objektorientÄta valoda, taÄu viss tiek noteikts dinamiski, nevis statiski. ArÄ« viss ir objekts. VÄlÄkie raksti paredz virspusÄju iepazīŔanos ar valodu. Ja vÄlaties sÄkt mÄcīŔanÄs procesu, es iesaku sÄkt ar .
- Lai veiktu mÅ«su turpmÄkos uzdevumus, instalÄjiet .
- IDE: Es izmantoju , bet patiesÄ«bÄ ir . Ja izmantojat Atelier, tad ir pieejams Eclipse spraudnis Python izstrÄdÄtÄjiem. Ja izmantojat VS Code, tad ir pieejams paplaÅ”inÄjums Python.
- Notebook: vietÄ IDE jÅ«s varat rakstÄ«t un dalÄ«ties ar saviem skriptiem tieÅ”saistes piezÄ«mju grÄmatÄs. VispopulÄrÄkÄ no tÄm ir .
BibliotÄkas
Å eit (nepilns) saraksts ar maŔīnmÄcīŔanÄs bibliotÄm:
- ā fundamentÄla pakete precÄ«zajiem aprÄÄ·iniem.
- ā augstas veiktspÄjas datu struktÅ«ras un datu analÄ«zes rÄ«ki.
- ā grafiku izveide.
- ā vizualizÄcijas rÄ«ks, balstÄ«ts uz matplotlib.
- ā maŔīnmÄcīŔanÄs metodes.
- ā maŔīnmÄcīŔanÄs algoritmi gradienta palielinÄÅ”anas metodoloÄ£ijÄ (Gradient Boosting).
- ā NLP.
- ā neironu tÄ«kli.
- ā platforma maŔīnmÄcīŔanÄs modeļu izveidei.
- ā platforma maŔīnmÄcīŔanÄs modeļu izveidei, kas orientÄta uz Python.
- ā PMML no dažÄdiem modeļiem.
AI/ML tehnoloÄ£ijas ļauj padarÄ«t biznesu efektÄ«vÄku un pielÄgojamu. TurklÄt Å”odien Ŕīs tehnoloÄ£ijas kļūst vieglÄk izstrÄdÄjamas un Ä«stenojamas. SÄciet apgÅ«t AI/ML tehnoloÄ£ijas un to, kÄ tÄs var palÄ«dzÄt jÅ«su organizÄcijai augt.
UzstÄdīŔana
IespÄjamas vairÄkas metodes Python Gateway instalÄÅ”anai un izmantoÅ”anai:
- operÄtÄjsistÄmu
- Windows
- Linux
- Mac
- Docker
- Izmantojiet attÄlu no DockerHub
- Izveidojiet savu attÄlu
NeatkarÄ«gi no instalÄcijas veida, jums bÅ«s nepiecieÅ”ams avota kods. VienÄ«gÄ vieta, kur lejupielÄdÄt kodu, ir . TÄ satur pÄrbaudÄ«tus stabilus izlaidumus, vienkÄrÅ”i Åemiet pÄdÄjo. Å obrÄ«d tas ir 0.8, bet laikam ejot, bÅ«s arÄ« jauni. NeklonÄjiet/neielÄdÄjiet repozitoriju, lejupielÄdÄjiet pÄdÄjo izlaidumu.
operÄtÄjsistÄmu
Ja, instalÄjat Python Gateway operÄtÄjsistÄmÄ, vispirms (neatkarÄ«gi no operÄtÄjsistÄmas) jÄinstalÄ Python. Lai to izdarÄ«tu:
- . Ieteicams instalÄt Python noklusÄjuma direktorijÄ.
- InstalÄjiet moduli
dill:pip install dill. - LejupielÄdÄjiet ObjectScript kodu (t.i.,
do $system.OBJ.ImportDir("C:InterSystemsReposPythoniscpy", "*.cls", "c",,1)) jebkurÄ jomÄ ar produktiem. Ja vÄlaties, lai esoÅ”Ä joma atbalstÄ«tu produktus, veiciet:write ##class(%EnsembleMgr).EnableNamespace($Namespace, 1). - Ievietojiet mapÄ
binjÅ«su InterSystems IRIS instancÄ. BibliotÄkas failam jÄbÅ«t pieejamam ceļÄ, ko atgriežwrite ##class(isc.py.Callout).GetLib().
Windows
- PÄrliecinieties, ka vides mainÄ«gais
PYTHONHOMEnorÄda uz Python 3.6.7. - PÄrliecinieties, ka sistÄmas vides mainÄ«gais
PATHsatur mainÄ«goPYTHONHOME(vai direktoriju, uz kuru tas norÄda).
Linux (Debian/Ubuntu)
- PÄrbaudiet, vai vides mainÄ«gais
PATHietver/usr/libun/usr/lib/x86_64-linux-gnu. Izmantojiet failu/etc/environmentlai iestatītu vides mainīgos. - Ja rodas kļūdas
undefined symbol: _Py_TrueStructiestatiet iestatÄ«jumuPythonLib. ArÄ« sadaÄ¼Ä ir sadaļa par problÄmu risinÄÅ”anu.
Mac
- PaÅ”laik atbalsta tikai Python 3.6.7 no . PÄrbaudiet mainÄ«go
PATH.
Ja esat mainÄ«jis vides mainÄ«gos, restartÄjiet savu InterSystems produktu.
Docker
Konteineru izmantoŔanu pavada virkni priekŔrocību:
- Paartraukums
- EfektivitÄte
- IzolÄcija
- Vieglums
- Nemainīgums
IepazÄ«stieties ar Å”o lai iegÅ«tu sÄ«kÄku informÄciju par Docker izmantoÅ”anu ar InterSystems produktiem.
Visas Python Gateway versijas Ŕobrīd ir balstītas uz konteineriem 2019.4.
Gatavs attÄls
Izpildiet: docker run -d -p 52773:52773 --name irispy intersystemscommunity/irispy-community:latest, lai lejupielÄdÄtu un palaistu Python Gateway ar InterSystems IRIS Community Edition. Tas ir viss.
Izveidojiet savu attÄlu
Lai izveidotu docker attÄlu, veiciet noliktavÄ: docker build --force-rm --tag intersystemscommunity/irispy:latest ..
NoklusÄjumÄ attÄls tiek izveidots, pamatojoties uz attÄlu store/intersystems/iris-community:2019.4.0.383.0, tomÄr jÅ«s varat to mainÄ«t, uzstÄdot mainÄ«go IMAGE.
Lai izveidotu no InterSystems IRIS, veiciet: `docker build ābuild-arg IMAGE=store/intersystems/iris:2019.4.0.383.0 āforce-rm ātag intersystemscommunity/irispy:latest`.
PÄc tam varat palaist docker attÄlu:
docker run -d
-p 52773:52773
-v /<HOST-DIR-WITH-iris.key>/:/mount
--name irispy
intersystemscommunity/irispy:latest
--key /mount/iris.keyJa izmantojat attÄlu, kas balstÄ«ts uz InterSystems IRIS Community Edition, jums var nebÅ«t nepiecieÅ”ams norÄdÄ«t atslÄgu.
KomentÄri
- TestÄÅ”anas process
isc.py.test.ProcesssaglabÄ attÄlu secÄ«bu pagaidu katalogÄ. VarbÅ«t vÄlaties mainÄ«t Å”o ceļu uz pieslÄgto katalogu. Lai to izdarÄ«tu, rediÄ£Äjiet iestatÄ«jumuWorkingDirnorÄdot pieslÄgto direktoriju. - Lai piekļūtu terminÄlim, izpildiet:
docker exec -it irispy sh. - Piekļuve SistÄmas VadÄ«bas PortÄlam ar lietotÄjvÄrdu
SuperUser/SYS. - Lai apturÄtu konteineru, izpildiet:
docker stop irispy && docker rm --force irispy.
InstalÄcijas pÄrbaude
Kad esat instalÄjis Python Gateway, ir vÄrts pÄrbaudÄ«t, vai tas darbojas. Izpildiet Å”o kodu InterSystems IRIS terminÄlÄ«:
set sc = ##class(isc.py.Callout).Setup()
set sc = ##class(isc.py.Main).SimpleString("x='HELLO'", "x", , .var).
write varRezultÄtÄ jÄbÅ«t izvadÄ«tas HELLO ā Python mainÄ«gÄ vÄrtÄ«ba x. Ja atgrieztÄ statuss sc ir kļūda vai var ir tukÅ”a, pÄrbaudiet .
API
Python Gateway ir uzstÄdÄ«ts, un jÅ«s esat pÄrliecinÄjuÅ”ies, ka tas darbojas. Laiks sÄkt to izmantot!
Galvenais interfeiss uz Python ir isc.py.Main. Tas piedÄvÄ Å”Ädas metožu grupas (visas atgriež %Status):
- Koda izpilde
- Datu pÄrraide
- Palīgmetodes
Koda izpilde
Šīs metodes ļauj izpildīt izlasītu Python kodu.
SimpleString
SimpleString ā tÄ ir galvenÄ metode. TÄ pieÅem 4 opciju argumentus:
codeā kods, kas jÄizpilda. JaunÄs rindas simbols:$c(10).returnVariableā mainÄ«gÄ nosaukums, kuru atgriezt.serializationā kÄ serializÄtreturnVariable. 0 ā string (noklusÄjums), 1 ā repr.rezultÄtsā ByRef atsauce uz mainÄ«go, kurÄ tiks ierakstÄ«ta vÄrtÄ«bareturnVariable.
IepriekÅ” mÄs izpildÄ«jÄm:
set sc = ##class(isc.py.Main).SimpleString("x='HELLO'", "x", , .var).Å ajÄ piemÄrÄ mÄs pieŔķiram Python mainÄ«gajam x vÄrtÄ«ba Hello un vÄlamies atgriezt Python mainÄ«gÄ vÄrtÄ«bu x ObjectScript mainÄ«gajÄ var.
ExecuteCode
ExecuteCode ir droÅ”Äka un mazÄk ierobežota alternatÄ«va SimpleString.
Rindas InterSystems IRIS platformÄ ir ierobežotas lÄ«dz 3 641 144 simboliem, un, ja vÄlaties izpildÄ«t garÄku kodu, jums jÄdarbina plÅ«smas.
PieÅem divus argumentus:
codeā Python koda rinda vai plÅ«sma, kas jÄizpilda.variableā (pÄc izvÄles) pieŔķir izpildes rezultÄtucodeÅ”im Python mainÄ«gajam.
PiemÄrs izmantoÅ”anai:
set sc = ##class(isc.py.Main).ExecuteCode("2*3", "y").Å ajÄ piemÄrÄ mÄs reizinÄm 2 ar 3 un ierakstÄm rezultÄtu Python mainÄ«gajÄ y.
Datu pÄrraide
PÄrraidiet datus Python un atpakaļ.
Python -> InterSystems IRIS
Ir 4 veidi, kÄ iegÅ«t Python mainÄ«gÄ vÄrtÄ«bu InterSystems IRIS, atkarÄ«bÄ no nepiecieÅ”amÄs serializÄcijas:
StringvienkÄrÅ”u datu tipu un atkļūdoÅ”anai.ReprvienkÄrÅ”u objektu glabÄÅ”anai un atkļūdoÅ”anai.JSONvieglai datu manipulÄcijai InterSystems IRIS pusÄ.Pickleobjektu saglabÄÅ”anai.
Å Ä«s metodes ļauj iegÅ«t mainÄ«gÄs vÄrtÄ«bas no Python kÄ virknes vai plÅ«smas.
GetVariable(variable, serialization, .stream, useString)ā iegÅ«tserializationmainÄ«govariableparplÅ«smaTransakcijauseStringir 1 un serializÄcija tiek ierakstÄ«ta virknei, tad tiek atgriezta virkne, nevis plÅ«sma.GetVariableJson(variable, .stream, useString)ā iegÅ«t JSON serializÄciju mainÄ«gajai.GetVariablePickle(variable, .stream, useString, useDill)ā iegÅ«t Pickle (vai Dill) serializÄciju mainÄ«gajai.
MÄÄ£inÄsim iegÅ«t mÅ«su mainÄ«go. y.
set sc = ##class(isc.py.Main).GetVariable("y", , .val, 1)
write val
>6InterSystems IRIS -> Python
IelÄdÄjam datus no InterSystems IRIS uz Python.
ExecuteQuery(query, variable, type, namespace)ā izveido datu kopu (pandasdataframevailist) no SQL vaicÄjuma un iestata to Python mainÄ«gajÄvariable. Pakotneisc.pyjÄbÅ«t pieejamai sadaļÄnamespaceā tur tiks izpildÄ«ts vaicÄjums.ExecuteGlobal(global, variable, type, start, end, mask, labels, namespace)ā ielÄdÄ datus no globÄlaglobÄlsno apakÅ”indeksastartlÄ«dzendPython kÄ mainÄ«gÄ tipatype:list, vai pandasdataframe. OpcionÄlo argumentu aprakstsmaskunlabelsir pieejams klases dokumentÄcijÄ un repozitorijÄ .ExecuteClass(class, variable, type, start, end, properties, namespace)ā ielÄdÄ datus no klasesklaseno idstartlÄ«dzendPython kÄ mainÄ«gÄ tipatype:list, vai pandasdataframe.propertiesā saraksts (atdalÄ«tÄjs ā komats) ar klases Ä«paŔībÄm, kuras jÄpievieno datu kopai. Atbalsta maskas.*un?. NoklusÄjuma ā*(visas Ä«paŔības). ÄŖpaŔība%%CLASSNAMEtiek ignorÄts.ExecuteTable(table, variable, type, start, end, properties, namespace)ā ielÄdÄ datus no tabulasgaldano idstartlÄ«dzendPython.
ExecuteQuery ā universÄls (jebkurÅ” derÄ«gs SQL vaicÄjums tiks nodots Python). TomÄr, ExecuteGlobal un tÄ apvÄrtnes ExecuteClass un ExecuteTable darbojas ar noteiktiem ierobežojumiem. Tie ir daudz ÄtrÄki (3-5 reizes ÄtrÄk nekÄ ODBC draiveris un 20 reizes ÄtrÄk. ExecuteQuery). Papildu informÄcija ir .
Visas Ŕīs metodes atbalsta datu pÄrsÅ«tīŔanu no jebkuras jomas. Pakotne isc.py jÄbÅ«t pieejamai mÄrÄ·a jomÄ.
ExecuteQuery
ExecuteQuery(request, variable, type, namespace) ā rezultÄtu pÄrsÅ«tīŔana no jebkura derÄ«ga SQL vaicÄjuma uz Python. Tas ir vislÄnÄkÄ datu pÄrsÅ«tīŔanas metode. Izmantojiet to, ja ExecuteGlobal un tÄ apvÄrtnes nav pieejamas.
Argumenti:
vaicÄjumsā SQL vaicÄjums.variableā Python mainÄ«gÄ nosaukums, kurÄ tiek ierakstÄ«ti dati.typeālistvai Pandasdataframe.namespaceā joma, kurÄ tiks izpildÄ«ts vaicÄjums.
ExecuteGlobal
ExecuteGlobal(global, variable, type, start, end, mask, labels, namespace) ā globÄla pÄrsÅ«tīŔana uz Python.
Argumenti:
globÄlsā globÄla nosaukums bez^variableā Python mainÄ«gÄ nosaukums, kurÄ tiek ierakstÄ«ti dati.typeālistvai Pandasdataframe.startā globÄla pirmÄ apakÅ”indeksa. ObligÄti%Integer.endā pÄdÄjais globÄlÄs apakÅ”raksts. Objekti%Integer.maskā globÄlÄs vÄrtÄ«bu maska. Masat var bÅ«t Ä«sÄka nekÄ globÄlo lauku skaits (Å”ajÄ gadÄ«jumÄ lauki beigÄs tiks izlaisti). KÄ formatÄt masku:+pÄrsÅ«tÄ«t vÄrtÄ«bu tÄ, kÄ tÄ ir.-izlaist vÄrtÄ«bu.bā LoÄ£iskais tips (0āFalse, viss pÄrÄjais āTrue).dā Datums (no $horolog, uz Windows no 1970, uz Linux no 1900).tā Laiks ($horolog, sekundes pÄc pusnakts).mā Laika zÄ«mogs (gads-mÄnesis-diena stunda:minÅ«te:sekunde).
labelsā %List kolonnu nosaukumu. Pirmais elements ā apakÅ”raksta nosaukums.namespaceā joma, kurÄ tiks izpildÄ«ts vaicÄjums.
ExecuteClass
ApmeklÄ ExecuteGlobal. Balstoties uz klases definÄ«ciju, sagatavo aicinÄjumu ExecuteGlobal un izsauc to.
ExecuteClass(class, variable, type, start, end, properties, namespace) ā klases datu nodoÅ”ana Python.
Argumenti:
klaseā klases nosaukumsvariableā Python mainÄ«gÄ nosaukums, kurÄ tiek ierakstÄ«ti dati.typeālistvai Pandasdataframe.startā sÄkuma Id.endā beigu Idpropertiesā saraksts (atdalÄ«tÄjs ā komats) ar klases Ä«paŔībÄm, kuras jÄpievieno datu kopai. Atbalsta maskas.*un?. NoklusÄjuma ā*(visas Ä«paŔības). ÄŖpaŔība%%CLASSNAMEtiek ignorÄts.namespaceā joma, kurÄ tiks izpildÄ«ts vaicÄjums.
Visas Ä«paŔības tiek pÄrsÅ«tÄ«tas tÄ, kÄ tÄs ir, izÅemot tipi te, %Time, %Boolean un %TimeStamp ā tÄs tiek konvertÄtas atbilstoÅ”ajÄs Python klasÄs.
ExecuteTable
ApmeklÄ ExecuteClass. PÄrvÄrÅ” tabulas nosaukumu par klases nosaukumu un izsauc ExecuteClass. Paraksts:
ExecuteTable(table, variable, type, start, end, properties, namespace) ā tabulas datu nodoÅ”ana Python.
Argumenti:
galdaā tabulas nosaukums.
Visi citi argumenti tiek pÄrsÅ«tÄ«ti tÄ, kÄ ir, uzExecuteClass.
Pieraksti
ExecuteGlobal,ExecuteClassunExecuteTabledarbojas vienÄdi Ätri.ExecuteGlobal20 reizes ÄtrÄk nekÄExecuteQueryuz lieliem datu kopÄm (pÄrsÅ«tīŔanas laiks >0.01 sekundes).ExecuteGlobal,ExecuteClassunExecuteTabledarbojas ar globÄlÄm struktÅ«rÄm:^global(key) = $lb(prop1, prop2, ..., propN)kurkeyā vesels skaitlis.- Lai
ExecuteGlobal,ExecuteClassunExecuteTableatbalstÄ«tais vÄrtÄ«bu diapazonsteatbilst diapazonammktimeun ir atkarÄ«gs no OS (: 1970-01-01, 1900-01-01, ). Izmantojiet%TimeStamplai nosÅ«tÄ«tu datus Ärpus Ŕī diapazona vai izmantojiet pandas dataframe, jo Å”is ierobežojums attiecas tikai uz sarakstu. - Lai
ExecuteGlobal,ExecuteClassunExecuteTablevisi argumenti, izÅemot datu avotu (globÄlo, klasi vai tabulu) un mainÄ«go, ir izvÄles.
PiemÄri
Testa klase satur metodi, kas demonstrÄ visus datu nodoÅ”anas variantus:
iestÄdÄ«t globÄlo = "isc.py.test.PersonD"
iestÄdÄ«t klasi = "isc.py.test.Person"
iestÄdÄ«t tabulu = "isc_py_test.Person"
iestÄdÄ«t vaicÄjumu = "SELECT * FROM isc_py_test.Person"
// VispÄrÄjie argumenti
iestÄdÄ«t mainÄ«go = "df"
iestÄdÄ«t tipu = "dataframe"
iestÄdÄ«t sÄkumu = 1
iestÄdÄ«t beigas = $g(^isc.py.test.PersonD, sÄkums)
// Metode 0: ExecuteGlobal bez argumentiem
iestÄdÄ«t sc = ##class(isc.py.Main).ExecuteGlobal(globÄlais, mainÄ«gais _ 0, tips)
// Metode 1: ExecuteGlobal ar argumentiem
// PÄrsÅ«tot globÄlu, laukus norÄda manuÄli
// globalKey - apakÅ”reizinÄtÄja nosaukums
iestÄdÄ«t etiÄ·etes = $lb("globalKey", "VÄrds", "DzimÅ”anas datums", "TS", "RandomTime", "VecumsGadi", "VecumsDecimal", "VecumsDouble", "Bool")
// maska satur par 1 elementu mazÄk nekÄ etiÄ·etes, jo "globalKey" - apakÅ”reizinÄtÄja nosaukums
// Izlaižam %%CLASSNAME
iestÄdÄ«t maska = "-+dmt+++b"
iestÄdÄ«t sc = ##class(isc.py.Main).ExecuteGlobal(globÄlais, mainÄ«gais _ 1, tips, sÄkums, beigas, maska, etiÄ·etes)
// Metode 2: ExecuteClass
iestÄdÄ«t sc = ##class(isc.py.Main).ExecuteClass(klase, mainÄ«gais _ 2, tips, sÄkums, beigas)
// Metode 3: ExecuteTable
iestÄdÄ«t sc = ##class(isc.py.Main).ExecuteTable(tabula, mainÄ«gais _ 3, tips, sÄkums, beigas)
// Metode 4: ExecuteTable
iestÄdÄ«t sc = ##class(isc.py.Main).ExecuteQuery(vaicÄjums, mainÄ«gais _ 4, tips)Izsauciet metodi do ##class(isc.py.test.Person).Test() lai redzÄtu, kÄ darbojas visi datu pÄrsÅ«tīŔanas metodes.
Palīgmetodes
GetVariableInfo(mainÄ«gais, serializÄcija, .definÄts, .tips, .garums)ā iegÅ«t informÄciju par mainÄ«go: vai tas ir definÄts, klase un serializÄcijas garums.GetVariableDefined(mainÄ«gais, .definÄts)ā vai mainÄ«gais ir definÄts.GetVariableType(mainÄ«gais, .tips)ā iegÅ«t mainÄ«gÄ klasi.GetStatus()ā iegÅ«t un dzÄst pÄdÄjo izÅÄmumu Python pusÄ.GetModuleInfo(module, .importÄts, .alias)ā iegÅ«t moduļa mainÄ«go un importÄÅ”anas statusu.GetFunctionInfo(function, .definÄts, .tips, .dokumenti, .paraksts, .argumenti)ā iegÅ«t informÄciju par funkciju.
SadarbspÄja
JÅ«s esat iemÄcÄ«jies izsaukt Python Gateway no terminÄla, tagad sÄksim to izmantot produkcijÄ. SaziÅas pamats ar Python Å”ÄdÄ režīmÄ ir isc.py.ens.Operation. Tas ļauj mums:
- Izpildīt kodu Python
- SaglabÄt\/Atjaunot Python kontekstu
- IelÄdÄt un iegÅ«t datus no Python
PrincipÄ, Python operÄcija ir ietvars ap isc.py.Main. OperÄcija isc.py.ens.Operation ļauj mijiedarboties ar Python procesu no InterSystems IRIS produktiem. Atbalsta piecus pieprasÄ«jumus:
isc.py.msg.ExecutionRequestlai izpildÄ«tu Python kodu. Atgriežisc.py.msg.ExecutionResponsear izpildes rezultÄtu un pieprasÄ«to mainÄ«go vÄrtÄ«bÄm.isc.py.msg.StreamExecutionRequestlai izpildÄ«tu Python kodu. Atgriežisc.py.msg.StreamExecutionResponseizpildes rezultÄtu un pieprasÄ«to mainÄ«go vÄrtÄ«bÄm. LÄ«dzÄ«giisc.py.msg.ExecutionRequest, bet pieÅem un atgriež straumes vietÄ virknÄm.isc.py.msg.QueryRequestlai nodotu SQL pieprasÄ«juma izpildes rezultÄtu. AtgriežEns.Response.isc.py.msg.GlobalRequest/isc.py.msg.ClassRequest/isc.py.msg.TableRequestlai pÄrsÅ«tÄ«tu datus globÄlai/klasei/tabulai. AtgriežEns.Response.isc.py.msg.SaveRequestlai saglabÄtu Python kontekstu. AtgriežEns.StringResponsear konteksta identifikatoru.isc.py.msg.RestoreRequestlai atjaunotu Python kontekstu.TurklÄt,
isc.py.ens.Operationir divi iestatÄ«jumi:Initializerā klases izvÄle, kas Ä«steno interfeisuisc.py.init.Abstract. To var izmantot funkciju, moduļu, klaÅ”u u.c. ielÄdÄÅ”anai. Tas tiek veikts vienreiz procesa palaiÅ”anas brÄ«dÄ«.PythonLibā (tikai Linux) ja redzat kļūdas ielÄdÄÅ”anas laikÄ, iestÄdiet tÄ vÄrtÄ«bulibpython3.6m.sovai pat uz pilnu Python bibliotÄkas ceļu.
Biznesa procesu izveide
Pieejami divi klase, kas atvieglo biznesa procesu izstrÄdi:
isc.py.ens.ProcessUtilsļauj izvilkt anotÄcijas no aktivitÄtÄm, nomainot mainÄ«gÄs.isc.py.util.BPEmulatorļauj viegli testÄt biznesa procesus ar Python. Tas var izpildÄ«t biznesa procesu (daļas Python valodÄ) paÅ”reizÄjÄ procesÄ.
MainÄ«go nomaiÅa
Visi biznesa procesi, kas manto no isc.py.ens.ProcessUtils, var izmantot metodi GetAnnotation(name) lai iegÅ«tu aktivitÄtes anotÄcijas vÄrtÄ«bu pÄc tÄs nosaukuma. AktivitÄtes anotÄcija var saturÄt mainÄ«gos, kuri tiks aprÄÄ·inÄti InterSystems IRIS pusÄ, pirms to nodoÅ”anas Python. LÅ«k, mainÄ«go nomaiÅas sintakse:
${class:method:arg1:...:argN}ā metodika izsaukums#{expr}ā izpildÄ«t kodu ObjectScript valodÄ.
PiemÄrs pieejams testÄÅ”anas biznesa procesÄ isc.py.test.Process, piemÄram, aktivitÄtÄ Correlation Matrix: Graph: f.savefig(r'#{process.WorkDirectory}SHOWCASE${%PopulateUtils:Integer:1:100}.png'). Å ajÄ piemÄrÄ:
#{process.WorkDirectory}atgriež objekta WorkDirectory Ä«paŔībuprocess, kas ir klasesisc.py.test.Processt.i., paÅ”reizÄjÄ biznesa procesa instances.${%PopulateUtils:Integer:1:100}izsauc metodiIntegerklase%PopulateUtils, nododot argumentus1un100, atgriežot nejauÅ”u veselu skaitli diapazonÄ1...100.
TestÄÅ”anas biznesa process
Testa produkti un testÄÅ”anas biznesa process ir pieejami noklusÄjuma iestatÄ«jumiem kÄ daļa no Python Gateway. Lai tos izmantotu:
- Izpildiet terminÄlÄ« OS:
pip install pandas matplotlib seaborn. - Izpildiet terminÄlÄ« InterSystems IRIS:
do ##class(isc.py.test.CannibalizationData).Import()lai aizpildītu testa datus. - Palaižiet ražoŔanu
isc.py.test.Production. - Nosūtīt pieprasījumu tipa
Ens.Requestparisc.py.test.Process.
ApskatÄ«sim, kÄ viss tas kopÄ darbojas. Atveriet isc.py.test.Process BPL redaktorÄ:

Koda izpilde
VisnopietnÄkais izsaukums ir Python koda izpilde:

Izmanto pieprasÄ«jumu isc.py.msg.ExecutionRequest, Å”eit ir tÄ Ä«paŔības:
Kodsā Python kods.SeparateLinesā vai sadalÄ«t kodu pa rindÄm izpildei.$c(10)(n) tiek izmantots rindu atdalīŔanai. LÅ«dzu, Åemiet vÄrÄ, ka NAV ieteicams apstrÄdÄt ziÅojumu uzreiz visu, Ŕī funkcija ir paredzÄta tikai atseviŔķai apstrÄdeidefun lÄ«dzÄ«giem daudzrindu izteiksmÄm. PÄc noklusÄjuma0.Variablesā komatu atdalÄ«ts mainÄ«go saraksts, kas tiks pievienots atbildei.Serializationā KÄ serializÄt mainÄ«gus, kurus vÄlamies atgriezt. IespÄjas:Str,Repr,JSON,PickleunDill, pa noklusÄjumuStr.
MÅ«su gadÄ«jumÄ mÄs tikai iestatÄm rekvizÄ«tu Kods, tÄpÄc visi pÄrÄjie rekvizÄ«ti izmanto noklusÄjuma vÄrtÄ«bas. MÄs to iestatÄm, izsaucot process.GetAnnotation("Import pandas"), kas izpildes laikÄ atgriež anotÄciju pÄc mainÄ«go substitÅ«cijas izpildes. Galu galÄ kods import pandas as pd tiks nodots Python. GetAnnotation var bÅ«t noderÄ«ga, lai iegÅ«tu daudzrindu Python skriptus, bet Å”Ä kodu iegūŔanas veidam nav ierobežojumu. JÅ«s varat iestatÄ«t rekvizÄ«tu Kods jums ÄrtÄ veidÄ.
Mainīgo iegūŔana
VÄl viens interesants izaicinÄjums, izmantojot isc.py.msg.ExecutionRequest ā Correlation Matrix: Tabular:

Tas aprÄÄ·ina korrelÄcijas matricu Python pusÄ un izvelk mainÄ«go corrmat atsaka InterSystems IRIS JSON formÄtÄ, iestÄdot pieprasÄ«juma rekvizÄ«tus:
Variables:"corrmat"Serialization:"JSON"
MÄs varam redzÄt rezultÄtus Visual Trace:

Un, ja Ŕī vÄrtÄ«ba bÅ«s nepiecieÅ”ama BPA, to var iegÅ«t Å”Ädi: callresponse.Variables.GetAt("corrmat").
Datu pÄrraide
TÄlÄk runÄsim par datu pÄrsÅ«tīŔanu no InterSystems IRIS uz Python, visi datu pÄrsÅ«tīŔanas pieprasÄ«jumi Ä«steno interfeisu isc.py.msg.DataRequest, kas nodroÅ”ina Å”Ädas Ä«paŔības:
Variableā Python mainÄ«gais, kurÄ tiek ierakstÄ«ti dati.Typeā mainÄ«gÄ tips:dataframe(pandas datu rÄmis) vailist.Namespaceā joma, no kuras iegÅ«stam datus. PaketÄmisc.pyjÄbÅ«t pieejamÄm Å”ajÄ jomÄ. Tas var bÅ«t joma bez produkciju atbalsta.
Pamatojoties uz Ŕo interfeisu, ir ieviesti 4 pieprasījumu klases:
isc.py.msg.QueryRequestā iestatiet rekvizÄ«tuQuerylai pÄrsÅ«tÄ«tu SQL pieprasÄ«jumu.isc.py.msg.ClassRequestā iestatiet rekvizÄ«tuClasslai pÄrsÅ«tÄ«tu klases datus.isc.py.msg.TableRequestā iestatÄ«t rekvizÄ«tuTablelai pÄrsÅ«tÄ«tu tabulas datus.isc.py.msg.GlobalRequestā iestatÄ«t rekvizÄ«tuGloballai pÄrsÅ«tÄ«tu globÄlos datus.
Testa procesÄ pÄrskatiet aktivitÄti RAW, kur isc.py.msg.QueryRequest parÄdÄ«ts darbÄ«bÄ.

Python konteksta saglabÄÅ”ana/atjaunoÅ”ana
Visbeidzot, mÄs varam saglabÄt Python kontekstu InterSystems IRIS, lai to izdarÄ«tu, nosÅ«tÄ«sim isc.py.msg.SaveRequest ar argumentiem:
Maskā SaglabÄ tikai tos mainÄ«gos, kas atbilst masÄ·Ä. Atbalsta*un?. PiemÄrs:"Data*, Figure?". Pa noklusÄjumu*.MaxLengthā MaksimÄlais saglabÄjamÄs mainÄ«gÄs garums. Ja mainÄ«gÄs serializÄcija ir garÄka, tad tÄ tiks ignorÄta. Iestatiet 0, lai iegÅ«tu mainÄ«gÄs jebkura garuma. NoklusÄjuma$$$MaxStringLength.Nosaukumsā Konteksta nosaukums (pÄc izvÄles).Aprakstsā Konteksta apraksts (pÄc izvÄles).
Atgriež Ens.StringResponse ar Id saglabÄtÄ konteksta. TestÄÅ”anas procesÄ pÄrbaudiet aktivitÄti Save Context.
AtbilstoÅ”ais pieprasÄ«jums isc.py.msg.RestoreRequest ielÄdÄ kontekstu no InterSystems IRIS uz Python:
ContextIdā konteksta identifikators.Clearā notÄ«rÄ«t kontektu pirms atjaunoÅ”anas.
Jupyter Notebook
ā ir atvÄrtÄ koda web lietotne, kas ļauj izveidot piezÄ«mjdatorus, kuros ir kods, vizualizÄcijas un teksts, un tos publicÄt. Python Gateway ļauj pÄrskatÄ«t un rediÄ£Ät BPL procesus Jupyter Notebook formÄtÄ. LÅ«dzu, Åemiet vÄrÄ, ka Å”obrÄ«d tiek izmantots standarta Python 3 ekzekutors.
Å is paplaÅ”inÄjums pieÅem, ka anotÄcijas satur Python kodu un izmanto aktivitÄÅ”u nosaukumus kÄ priekÅ”nosaukumus. Tagad ir iespÄjams izstrÄdÄt biznesa procesus PythonGateway Jupyter Notebook. LÅ«k, kas ir iespÄjams:
- Izveidot jaunas biznesa procedūras
- DzÄst biznesa procesus
- Izveidot jaunas aktivitÄtes
- MainÄ«t aktivitÄtes
- DzÄst aktivitÄtes
Å eit . Un daži ekrÄnuzÅÄmumi:
Procesu pÄrlÅ«ks

Procesa redaktors

UzstÄdīŔana
- Jums būs nepiecieŔams InterSystems IRIS 2019.2+.
- InstalÄjiet PythonGateway v0.8+ (vajadzÄ«gs tikai
isc.py.util.Jupyter,isc.py.util.JupyterCheckpointsunisc.py.ens.ProcessUtils). - Atjauniniet ObjectScript kodu no repozitorija.
- Izpildiet
do ##class(isc.py.util.Jupyter).Install()un sekojiet norÄdÄm.
.
SecinÄjumi
MLToolkit ir rÄ«ku kopums, kura mÄrÄ·is ir apvienot modeļus un transakciju vidi, lai izveidotie modeļi tiktu viegli izmantoti tieÅ”i jÅ«su biznesa procesos. Python Gateway ir daļa no MLToolkit un nodroÅ”ina integrÄciju ar Python valodu, ļaujot orkestrÄt jebkurus maŔīnmÄcīŔanÄs algoritmus, kas izstrÄdÄti Python valodÄ (galvenÄ vide daudziem datu zinÄtniekiem), izmantot daudzas gatavas bibliotÄkas Ätrai adaptÄ«vu, automatizÄtu analÄ«tisku AI/ML risinÄjumu izstrÄdei platformÄ InterSystems IRIS.
Saites
MLToolkit
MLToolkit lietotÄju grupa ir privÄta GitHub repozitorija, izveidota kÄ daļa no uzÅÄmuma GitHub organizÄcijas InterSystems. TÄ ir vÄrsta uz ÄrÄjiem lietotÄjiem, kuri instalÄ, pÄtÄ« vai jau izmanto MLToolkit komponentus, tostarp Python Gateway. GrupÄ pieejami vairÄki Ä«stenoti gadÄ«jumi (ar avota kodu un testÄÅ”anas datiem) marketinga, ražoÅ”anas, medicÄ«nas un daudzÄs citÄs nozarÄs. Lai pievienotos MLToolkit lietotÄju grupai, lÅ«dzu, nosÅ«tiet Ä«su ziÅu uz e-pasta adresi: un norÄdiet savÄ vÄstulÄ Å”Ädu informÄciju:
- GitHub lietotÄja vÄrds
- OrganizÄcija (kur strÄdÄjat vai mÄcÄties)
- Amats (jÅ«su faktiskais amats jÅ«su organizÄcijÄ, vai "Students", vai "BrÄ«vmÄkslinieks").
- Valsts
Visiem, kuri izlasÄ«juÅ”i rakstu un interesÄjas par InterSystems IRIS iespÄjÄm kÄ mÄkslÄ«gÄ intelekta un maŔīnmÄcīŔanÄs izstrÄdes vai mitinÄÅ”anas platformu, piedÄvÄjam apspriest iespÄjamos scenÄrijus, kas interesÄ jÅ«su uzÅÄmumu. MÄs ar prieku analizÄsim jÅ«su uzÅÄmuma vajadzÄ«bas un kopÄ«gi noteiksim darbÄ«bas plÄnu; mÅ«su AI/ML ekspertu grupas kontaktadrese ir .
Avots: habr.com
