Å is raksts ir par Python Gateway, atklÄtÄ pirmkoda kopienas projektu InterSystems IRIS datu platformai. Å is projekts ļauj organizÄt jebkuru Python (daudzu datu zinÄtnieku galvenÄ vide) izveidotos maŔīnmÄcÄ«Å”anÄs algoritmus, izmantot daudzas gatavas bibliotÄkas, lai InterSystems IRIS platformÄ Ätri izveidotu adaptÄ«vus, robotizÄtus analÄ«tiskos AI/ML risinÄjumus. Å ajÄ rakstÄ es parÄdÄ«Å”u, kÄ InterSystems IRIS var organizÄt procesus Python, efektÄ«vi sazinÄties ar divvirzienu datiem un izveidot viedus biznesa procesus.
PlÄns
Ievads.
RÄ«ki.
UzstÄdÄ«Å”ana.
API.
SadarbspÄja.
Jupyter piezÄ«mju grÄmatiÅa.
SecinÄjumi.
Saites.
MLTrīku komplekts.
Ievads
Python ir augsta lÄ«meÅa, vispÄrÄjas nozÄ«mes programmÄÅ”anas valoda, kuras mÄrÄ·is ir uzlabot izstrÄdÄtÄju produktivitÄti un koda lasÄmÄ«bu. Å ajÄ rakstu sÄrijÄ es apspriedÄ«Å”u Python izmantoÅ”anas iespÄjas InterSystems IRIS platformÄ, galveno uzmanÄ«bu pievÄrÅ”ot Python kÄ valodas izmantoÅ”anai maŔīnmÄcÄ«Å”anÄs modeļu izveidei un palaiÅ”anai.
MaŔīnmÄcÄ«ba (ML) ir mÄkslÄ«gÄ intelekta metožu klase, kuras raksturÄ«ga iezÄ«me ir nevis tieÅ”s problÄmas risinÄjums, bet gan mÄcÄ«Å”anÄs daudzu lÄ«dzÄ«gu problÄmu risinÄÅ”anas procesÄ.
MaŔīnmÄcÄ«Å”anÄs algoritmi un modeļi kļūst arvien izplatÄ«tÄki. Tam ir daudz iemeslu, taÄu tas viss ir saistÄ«ts ar pieejamÄ«bu, vienkÄrŔību un praktisku rezultÄtu sasniegÅ”anu. Vai klasteru veidoÅ”ana vai pat neironu tÄ«klu modelÄÅ”ana ir jauna tehnoloÄ£ija?
Protams, nÄ, taÄu mÅ«sdienÄs nav jÄraksta simtiem tÅ«kstoÅ”u koda rindiÅu, lai palaistu vienu modeli, un modeļu izveides un izmantoÅ”anas izmaksas kļūst arvien mazÄkas.
RÄ«ki attÄ«stÄs ā lai gan mums nav pilnÄ«bÄ uz GUI orientÄtu AI/ML rÄ«ku, progress, ko esam redzÄjuÅ”i daudzÄs citÄs informÄcijas sistÄmu klasÄs, piemÄram, BI (no koda rakstÄ«Å”anas lÄ«dz ietvaru un uz GUI orientÄtu konfigurÄjamu risinÄjumu izmantoÅ”anai) novÄrots arÄ« AI/ML izveides rÄ«kos. MÄs jau esam izturÄjuÅ”i koda rakstÄ«Å”anas posmu, un Å”odien modeļu veidoÅ”anai un apmÄcÄ«bai izmantojam ietvarus.
ArÄ« citi uzlabojumi, piemÄram, iespÄja izplatÄ«t iepriekÅ” apmÄcÄ«tu modeli, kur gala lietotÄjam vienkÄrÅ”i jÄpabeidz modeļa apmÄcÄ«ba, izmantojot savus specifiskos datus, arÄ« atvieglo maŔīnmÄcÄ«bas sÄkÅ”anu. Å ie sasniegumi padara maŔīnmÄcÄ«Å”anos daudz vienkÄrÅ”Äku gan profesionÄļiem, gan uzÅÄmumiem kopumÄ.
No otras puses, mÄs apkopojam arvien vairÄk datu. Izmantojot vienotu datu platformu, piemÄram, InterSystems IRIS, visu Å”o informÄciju var nekavÄjoties sagatavot un izmantot kÄ ievadi maŔīnmÄcÄ«Å”anÄs modeļos.
PÄrejot uz mÄkoni, AI/ML projektu uzsÄkÅ”ana kļūst vienkÄrÅ”Äka nekÄ jebkad agrÄk. MÄs varam patÄrÄt tikai nepiecieÅ”amos resursus. TurklÄt, pateicoties mÄkoÅu platformu piedÄvÄtajai paralÄlizÄcijai, mÄs varam ietaupÄ«t laiku.
Bet kÄ ar rezultÄtiem? Å eit lietas kļūst sarežģītÄkas. Modeļu veidoÅ”anai ir daudz rÄ«ku, par kuriem es runÄÅ”u tÄlÄk. Laba modeļa izveidoÅ”ana nav vienkÄrÅ”a, bet ko darÄ«t tÄlÄk? PeļÅas gÅ«Å”ana no biznesa modeļa izmantoÅ”anas arÄ« ir nenozÄ«mÄ«gs uzdevums. ProblÄmas pamatÄ ir analÄ«tisko un transakciju darba slodzes un datu modeļu nodalÄ«Å”ana. Kad mÄs apmÄcÄm modeli, mÄs to parasti darÄm, pamatojoties uz vÄsturiskiem datiem. TaÄu vieta konstruÄtajam modelim ir darÄ«jumu datu apstrÄdÄ. KÄds labums no labÄkÄ krÄpniecisko darÄ«jumu noteikÅ”anas modeļa, ja mÄs to palaižam reizi dienÄ? KrÄpnieki jau sen aizbraukuÅ”i ar naudu. Mums ir jÄapmÄca modelis uz vÄsturiskiem datiem, taÄu mums tas ir arÄ« jÄpiemÄro reÄllaikÄ jauniem ienÄkoÅ”ajiem datiem, lai mÅ«su biznesa procesi varÄtu darboties saskaÅÄ ar modeļa prognozÄm.
ML Toolkit ir rÄ«ku komplekts, kura mÄrÄ·is ir tieÅ”i tas: apvienot modeļus un darÄ«jumu vidi, lai izveidotos modeļus varÄtu viegli izmantot tieÅ”i jÅ«su biznesa procesos. Python Gateway ir daļa no ML rÄ«kkopas un nodroÅ”ina integrÄciju ar Python valodu (lÄ«dzÄ«gi tam, kÄ R Gateway, kas ir daļa no ML Toolkit, nodroÅ”ina integrÄciju ar R valodu).
RÄ«kkopa
Pirms turpinÄm, es vÄlos aprakstÄ«t dažus Python rÄ«kus un bibliotÄkas, kuras izmantosim vÄlÄk.
Tehnoloģija
Python ir interpretÄta, augsta lÄ«meÅa, vispÄrÄjas nozÄ«mes programmÄÅ”anas valoda. Valodas galvenÄ priekÅ”rocÄ«ba ir tÄs lielÄ matemÄtikas, ML un AI bibliotÄku bibliotÄka. TÄpat kÄ ObjectScript, tÄ ir uz objektu orientÄta valoda, taÄu viss ir definÄts dinamiski, nevis statiski. ArÄ« viss ir objekts. VÄlÄkajos rakstos tiek pieÅemts, ka valodu pÄrzina Ä«slaicÄ«gi. Ja vÄlaties sÄkt mÄcÄ«ties, iesaku sÄkt ar dokumentÄcija.
IDE: Es izmantoju PyCharm, bet kopumÄ viÅi Š¼Š½Š¾Š³Š¾. Ja izmantojat Atelier, Python izstrÄdÄtÄjiem ir pieejams Eclipse spraudnis. Ja izmantojat VS kodu, Python ir paplaÅ”inÄjums.
PiezÄ«mju grÄmatiÅa: IDE vietÄ varat rakstÄ«t un kopÄ«got savus skriptus tieÅ”saistes piezÄ«mju grÄmatiÅÄs. PopulÄrÄkais no tiem ir Jupters.
BibliotÄkas
Å eit ir (nepilnÄ«gs) maŔīnmÄcÄ«Å”anÄs bibliotÄku saraksts:
AI/ML tehnoloÄ£ijas padara uzÅÄmÄjdarbÄ«bu efektÄ«vÄku un pielÄgojamÄku. TurklÄt mÅ«sdienÄs Ŕīs tehnoloÄ£ijas kļūst vieglÄk izstrÄdÄjamas un ievieÅ”amas. SÄciet mÄcÄ«ties par AI/ML tehnoloÄ£ijÄm un to, kÄ tÄs var palÄ«dzÄt jÅ«su organizÄcijai augt.
UzstÄdÄ«Å”ana
Ir vairÄki veidi, kÄ instalÄt un izmantot Python Gateway:
OS
Windows
Linux
magone
dokers
Izmantojiet attÄlu no DockerHub
Izveidojiet savu izskatu
NeatkarÄ«gi no instalÄÅ”anas metodes jums bÅ«s nepiecieÅ”ams avota kods. VienÄ«gÄ vieta, kur lejupielÄdÄt kodu ir izlaidumu lapa. TajÄ ir pÄrbaudÄ«ti stabili laidieni, vienkÄrÅ”i izmantojiet jaunÄko. Å obrÄ«d ir 0.8, bet ar laiku bÅ«s jaunas. NeklonÄjiet/lejupielÄdÄjiet repozitoriju, lejupielÄdÄjiet jaunÄko versiju.
OS
Ja instalÄjat Python Gateway operÄtÄjsistÄmÄ, vispirms (neatkarÄ«gi no operÄtÄjsistÄmas) ir jÄinstalÄ Python. PriekÅ” Ŕī:
LejupielÄdÄjiet ObjectScript kodu (t.i. do $system.OBJ.ImportDir("C:InterSystemsReposPythoniscpy", "*.cls", "c",,1)) uz jebkuru apgabalu ar produktiem. Ja vÄlaties, lai esoÅ”s apgabals atbalstÄ«tu produktus, palaidiet: write ##class(%EnsembleMgr).EnableNamespace($Namespace, 1).
Vieta norÄde DLL/SO/DYLIB uz mapi bin jÅ«su InterSystems IRIS instancÄ. BibliotÄkas failam ir jÄbÅ«t pieejamam atgrieztajÄ ceÄ¼Ä write ##class(isc.py.Callout).GetLib().
Windows
PÄrliecinieties, vai vides mainÄ«gais PYTHONHOME norÄda uz Python 3.6.7.
PÄrliecinieties, vai sistÄmas vides mainÄ«gais ir PATH satur mainÄ«go PYTHONHOME (vai direktoriju, uz kuru tas norÄda).
Linux (Debian/Ubuntu)
PÄrbaudiet, vai vides mainÄ«gais ir PATH satur /usr/lib Šø /usr/lib/x86_64-linux-gnu. Izmantot failu /etc/environment lai iestatÄ«tu vides mainÄ«gos.
PaÅ”laik tiek atbalstÄ«ta tikai Python 3.6.7 python.org. PÄrbaudiet mainÄ«go PATH.
Ja mainÄ«jÄt vides mainÄ«gos, restartÄjiet InterSystems produktu.
dokers
Konteineru izmantoÅ”anai ir vairÄkas priekÅ”rocÄ«bas:
PÄrnesamÄ«ba
EfektivitÄte
IzolÄcija
Vieglums
Nemainība
Apskatiet Å”o rakstu sÄrija lai iegÅ«tu papildinformÄciju par Docker lietoÅ”anu ar InterSystems produktiem.
Visas Python Gateway versijas paŔlaik ir balstītas uz konteineriem 2019.4.
Gatavs attÄls
Palaist: docker run -d -p 52773:52773 --name irispy intersystemscommunity/irispy-community:latestlai lejupielÄdÄtu un palaistu Python Gateway ar InterSystems IRIS Community Edition. Tas ir viss.
Izveidojiet savu izskatu
Lai izveidotu doka attÄlu, palaidiet repozitorija saknÄ: docker build --force-rm --tag intersystemscommunity/irispy:latest ..
PÄc noklusÄjuma attÄls tiek veidots, pamatojoties uz attÄlu store/intersystems/iris-community:2019.4.0.383.0, tomÄr varat to mainÄ«t, iestatot mainÄ«go IMAGE.
Lai izveidotu no InterSystems IRIS, palaidiet: `docker build --build-arg IMAGE=store/intersystems/iris:2019.4.0.383.0 --force-rm --tag intersystemscommunity/irispy:latest.
Ja izmantojat attÄlu, kura pamatÄ ir InterSystems IRIS Community Edition, varat izlaist atslÄgu.
KomentÄri
PÄrbaudes process isc.py.test.Process saglabÄ vairÄkus attÄlus pagaidu direktorijÄ. IespÄjams, vÄlÄsities mainÄ«t Å”o ceļu uz pievienoto direktoriju. Lai to izdarÄ«tu, rediÄ£Äjiet iestatÄ«jumu WorkingDir norÄdot pievienoto direktoriju.
Lai piekļūtu terminÄļa palaiÅ”anai: docker exec -it irispy sh.
Kad esat instalÄjis Python Gateway, ir vÄrts pÄrbaudÄ«t, vai tÄ 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 var
RezultÄtam jÄbÅ«t: HELLO ā Python mainÄ«gÄ vÄrtÄ«ba x. Ja atgrieÅ”anÄs statuss sc ir kļūda vai var tukÅ”s, pÄrbaudiet Readme ā TraucÄjummeklÄÅ”anas sadaļa.
API
Python Gateway ir instalÄta, un jÅ«s esat pÄrbaudÄ«jis, vai tas darbojas. Ir pienÄcis laiks sÄkt to lietot!
Galvenais Python interfeiss ir isc.py.Main. TÄ piedÄvÄ Å”Ädas metožu grupas (visas atgriež %Status):
Koda izpilde
Datu pÄrsÅ«tÄ«Å”ana
Papildu
Koda izpilde
Šīs metodes ļauj izpildīt patvaļīgu Python kodu.
VienkÄrÅ”Ä virkne
SimpleString - Ŕī ir galvenÄ metode. NepiecieÅ”ami 4 izvÄles argumenti:
result ā ByRef atsauce uz mainÄ«go, kurÄ tiek ierakstÄ«ta vÄrtÄ«ba returnVariable.
IepriekÅ” mÄs darÄ«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Älaties atgriezt Python mainÄ«gÄ vÄrtÄ«bu x uz ObjectScript mainÄ«go var.
ExecuteCode
ExecuteCode ir droÅ”Äka un mazÄk ierobežojoÅ”a alternatÄ«va SimpleString.
InterSystems IRIS platformas rindiÅas ir ierobežotas lÄ«dz 3 641 144 rakstzÄ«mÄm, un, ja vÄlaties izpildÄ«t garÄku koda daļu, ir jÄizmanto pavedieni.
Tiek pieÅemti divi argumenti:
code ā izpildÄmÄ Python koda rinda vai straume.
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ÄrsÅ«tÄ«Å”ana
PÄrsÅ«tiet datus uz un no Python.
Python -> InterSystems IRIS
Ir 4 veidi, kÄ iegÅ«t Python mainÄ«gÄ vÄrtÄ«bu programmÄ InterSystems IRIS atkarÄ«bÄ no vajadzÄ«gÄs serializÄcijas:
String vienkÄrÅ”iem datu tipiem un atkļūdoÅ”anai.
Repr vienkÄrÅ”u objektu glabÄÅ”anai un atkļūdoÅ”anai.
JSON Ärtai datu apstrÄdei InterSystems IRIS pusÄ.
Pickle lai saglabÄtu objektus.
Å Ä«s metodes ļauj izgÅ«t mainÄ«gos no Python kÄ virkni vai straumes.
GetVariable(variable, serialization, .stream, useString) - gÅ«t serialization mainÄ«gais variable Š² stream. Ja useString ir 1, un serializÄcija tiek ievietota virknÄ, tad tiek atgriezta virkne, nevis straume.
GetVariablePickle(variable, .stream, useString, useDill) -SaÅemiet Pickle (vai Dill) mainÄ«gÄ serializÄciju.
MÄÄ£inÄsim iegÅ«t mÅ«su mainÄ«go y.
set sc = ##class(isc.py.Main).GetVariable("y", , .val, 1)
write val
>6
InterSystems IRIS -> Python
Notiek datu ielÄde no InterSystems IRIS programmÄ Python.
ExecuteQuery(query, variable, type, namespace) - izveido datu kopu (pandas dataframe vai list) no sql vaicÄjuma un iestata to uz Python mainÄ«go variable. Plastmasas maisiÅÅ” isc.py jÄbÅ«t pieejamam apgabalÄ namespace ā tur tiks izpildÄ«ts pieprasÄ«jums.
ExecuteGlobal(global, variable, type, start, end, mask, labels, namespace) - ielÄdÄ globÄlos datus global no apakÅ”indeksa start lÄ«dz end Python kÄ tipa mainÄ«gais type: list, vai pandas dataframe. NeobligÄto argumentu apraksts mask un labels pieejams klases dokumentÄcijÄ un repozitorijÄ Datu pÄrsÅ«tÄ«Å”anas dokumenti.
ExecuteClass(class, variable, type, start, end, properties, namespace) - ielÄdÄ klases datus class no id start lÄ«dz end Python kÄ tipa mainÄ«gais type: list, vai pandas dataframe. properties ā to klases Ä«paŔību saraksts (atdalot ar komatu), kas jÄielÄdÄ datu kopÄ. AtbalstÄ«tas maskas * Šø ?. NoklusÄjums ā * (visi Ä«paÅ”umi). ÄŖpaÅ”ums %%CLASSNAME ignorÄts.
ExecuteTable(table, variable, type, start, end, properties, namespace) - ielÄdÄ tabulas datus table no id start lÄ«dz end programmÄ Python.
ExecuteQuery ā universÄls (jebkurÅ” pareizais SQL vaicÄjums tiks nodots Python). tomÄr ExecuteGlobal un tÄ ietinÄji ExecuteClass Šø ExecuteTable strÄdÄt ar vairÄkiem ierobežojumiem. Tie ir daudz ÄtrÄki (3-5 reizes ÄtrÄki nekÄ ODBC draiveris un 20 reizes ÄtrÄki ExecuteQuery). VairÄk informÄcijas plkst Datu pÄrsÅ«tÄ«Å”anas dokumenti.
Visas Ŕīs metodes atbalsta datu pÄrsÅ«tÄ«Å”anu no jebkuras vietas. Plastmasas maisiÅÅ” isc.py jÄbÅ«t pieejamam mÄrÄ·a apgabalÄ.
ExecuteQuery
ExecuteQuery(request, variable, type, namespace) ā jebkura pareiza SQL vaicÄjuma rezultÄtu pÄrsÅ«tÄ«Å”ana uz Python. Å Ä« ir lÄnÄkÄ datu pÄrsÅ«tÄ«Å”anas metode. Izmantojiet to, ja ExecuteGlobal un tÄ iesaiÅojumi nav pieejami.
Argumenti:
query - sql vaicÄjums.
variable ā Python mainÄ«gÄ nosaukums, kurÄ tiek ierakstÄ«ti dati.
type SÄkot no list vai Pandas dataframe.
namespace ā apgabals, kurÄ pieprasÄ«jums tiks izpildÄ«ts.
variable ā Python mainÄ«gÄ nosaukums, kurÄ tiek ierakstÄ«ti dati.
type SÄkot no list vai Pandas dataframe.
start ā pirmais globÄlÄ indeksa indekss. ObligÄti %Integer.
end ā globÄlÄ pÄdÄjais indekss. ObligÄti %Integer.
mask ā globÄlo vÄrtÄ«bu maska. Maska var bÅ«t Ä«sÄka nekÄ globÄlÄ lauku skaits (tÄdÄ gadÄ«jumÄ lauki beigÄs tiks izlaisti). KÄ formatÄt masku:
+ nodot vÄrtÄ«bu tÄdu, kÄda tÄ ir.
- izlaist vÄrtÄ«bu.
b ā BÅ«la tips (0 SÄkot no False, viss pÄrÄjais - True).
d ā Datums (no $horolog, operÄtÄjsistÄmÄ Windows no 1970. gada, operÄtÄjsistÄmÄ Linux no 1900. gada).
t ā Laiks ($horolog, sekundes pÄc pusnakts).
m ā Laikspiedols (formÄta virkne YEAR-MONTH-DAY STUNDA:MINUTE:SECOND).
labels ā %Sleju nosaukumu saraksts. Pirmais elements ir apakÅ”indeksa nosaukums.
namespace ā apgabals, kurÄ pieprasÄ«jums tiks izpildÄ«ts.
ExecuteClass
Aptiniet pÄri ExecuteGlobal. Pamatojoties uz klases definÄ«ciju, sagatavo zvanu ExecuteGlobal un zvana viÅam.
ExecuteClass(class, variable, type, start, end, properties, namespace) - klases datu nodoŔana Python.
Argumenti:
class - klases nosaukums
variable ā Python mainÄ«gÄ nosaukums, kurÄ tiek ierakstÄ«ti dati.
type SÄkot no list vai Pandas dataframe.
start ā sÄkuma ID.
end ā galÄ«gais ID
properties ā to klases Ä«paŔību saraksts (atdalot ar komatu), kas jÄielÄdÄ datu kopÄ. AtbalstÄ«tas maskas * Šø ?. NoklusÄjums ā * (visi Ä«paÅ”umi). ÄŖpaÅ”ums %%CLASSNAME ignorÄts.
namespace ā apgabals, kurÄ pieprasÄ«jums tiks izpildÄ«ts.
Visi rekvizÄ«ti tiek nodoti tÄdi, kÄdi tie ir, izÅemot tipa rekvizÄ«tus %Date, %Time, %Boolean Šø %TimeStamp - tie tiek pÄrvÄrsti attiecÄ«gajÄs Python klasÄs.
Izpildīt tabulu
Aptiniet pÄri ExecuteClass. PÄrvÄrÅ” tabulas nosaukumu klases nosaukumÄ un izsauc ExecuteClass. Paraksts:
ExecuteGlobal 20 reizes ÄtrÄk nekÄ ExecuteQuery uz lielÄm datu kopÄm (pÄrsÅ«tÄ«Å”anas laiks > 0.01 sekunde).
ExecuteGlobal, ExecuteClass Šø ExecuteTable strÄdÄt pie globÄlajiem elementiem ar Å”Ädu struktÅ«ru: ^global(key) = $lb(prop1, prop2, ..., propN) kur key ā vesels skaitlis.
Par ExecuteGlobal, ExecuteClass Šø ExecuteTable atbalstÄ«to vÄrtÄ«bu diapazonu %Date atbilst diapazonam mktime un atkarÄ«gs no OS (logi: 1970-01-01, Linux 1900-01-01, mac). Izmantot %TimeStamplai pÄrsÅ«tÄ«tu datus Ärpus Ŕī diapazona vai izmantotu pandas datu rÄmi, jo Å”is ir tikai saraksta ierobežojums.
Par ExecuteGlobal, ExecuteClass Šø ExecuteTable visi argumenti, izÅemot datu avotu (globÄlo, klasi vai tabulu) un mainÄ«go, nav obligÄti.
piemÄri
PÄrbaudes klase isc.py.test.Person satur metodi, kas parÄda visas datu pÄrsÅ«tÄ«Å”anas iespÄjas:
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)
Izsauciet metodi do ##class(isc.py.test.Person).Test() lai redzÄtu, kÄ darbojas visas datu pÄrsÅ«tÄ«Å”anas metodes.
Palīdzības metodes
GetVariableInfo(variable, serialization, .defined, .type, .length) ā iegÅ«t informÄciju par mainÄ«go: vai tas ir definÄts, tÄ klasi un serializÄcijas garumu.
GetVariableDefined(variable, .defined) ā vai mainÄ«gais ir definÄts.
JÅ«s esat iemÄcÄ«jies izsaukt Python Gateway no terminÄļa, tagad sÄksim to izmantot ražoÅ”anÄ. Pamats mijiedarbÄ«bai ar Python Å”ajÄ režīmÄ ir isc.py.ens.Operation. Tas ļauj mums:
Izpildīt kodu Python
SaglabÄt/atjaunot Python kontekstu
IelÄdÄjiet un saÅemiet datus no Python
BÅ«tÄ«bÄ Python darbÄ«ba ir iesaiÅojums isc.py.Main. DarbÄ«ba isc.py.ens.Operation nodroÅ”ina iespÄju mijiedarboties ar Python procesu no InterSystems IRIS produktiem. Tiek atbalstÄ«ti pieci vaicÄjumi:
isc.py.msg.ExecutionRequest lai izpildÄ«tu Python kodu. Atgriežas isc.py.msg.ExecutionResponse ar izpildes rezultÄtu un pieprasÄ«to mainÄ«go vÄrtÄ«bÄm.
isc.py.msg.StreamExecutionRequest lai izpildÄ«tu Python kodu. Atgriežas isc.py.msg.StreamExecutionResponse izpildes rezultÄts un pieprasÄ«to mainÄ«go vÄrtÄ«bas. Analogs isc.py.msg.ExecutionRequest, bet pieÅem un atgriež straumes, nevis virknes.
isc.py.msg.QueryRequest lai pÄrsÅ«tÄ«tu SQL vaicÄjuma izpildes rezultÄtu. Atgriežas Ens.Response.
isc.py.msg.GlobalRequest/isc.py.msg.ClassRequest/isc.py.msg.TableRequest globÄlo/klases/tabulas datu nodoÅ”anai. Atgriežas Ens.Response.
isc.py.msg.SaveRequest lai saglabÄtu Python kontekstu. Atgriežas Ens.StringResponse ar konteksta ID.
isc.py.msg.RestoreRequest lai atjaunotu Python kontekstu.
Bez tam, isc.py.ens.Operation ir divi iestatījumi:
Initializer ā klases izvÄle, kas ievieÅ” saskarni isc.py.init.Abstract. To var izmantot, lai ielÄdÄtu funkcijas, moduļus, klases utt. Tas tiek izpildÄ«ts vienu reizi, kad process sÄkas.
PythonLib - (tikai Linux), ja ielÄdes laikÄ redzat kļūdas, iestatiet tÄ vÄrtÄ«bu uz libpython3.6m.so vai pat pilnÄ ceÄ¼Ä uz Python bibliotÄku.
Biznesa procesu izveide
Ir pieejamas divas klases, kas atvieglo biznesa procesu attīstību:
isc.py.ens.ProcessUtils ļauj iegÅ«t anotÄcijas no darbÄ«bÄm ar mainÄ«go aizstÄÅ”anu.
isc.py.util.BPEmulator ļauj viegli pÄrbaudÄ«t biznesa procesus ar Python. Tas var izpildÄ«t biznesa procesu (Python daļas) paÅ”reizÄjÄ procesÄ.
MainÄ«gÄ aizstÄÅ”ana
Visi biznesa procesi ir mantoti 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. DarbÄ«bas anotÄcijÄ var bÅ«t mainÄ«gie, kas tiks aprÄÄ·inÄti InterSystems IRIS pusÄ, pirms tie tiks nodoti Python. Å eit ir sintakse mainÄ«go aizstÄÅ”anai:
${class:method:arg1:...:argN} - metodes izsaukums
#{expr} ā izpildÄ«t kodu ObjectScript valodÄ.
PiemÄrs ir pieejams pÄrbaudes biznesa procesÄ isc.py.test.Process, piemÄram, darbÄ«bÄ Correlation Matrix: Graph: f.savefig(r'#{process.WorkDirectory}SHOWCASE${%PopulateUtils:Integer:1:100}.png'). Å ajÄ piemÄrÄ:
#{process.WorkDirectory} atgriež objekta WorkDirectory rekvizÄ«tu process, kas ir klases gadÄ«jums isc.py.test.Process tie. paÅ”reizÄjais biznesa process.
${%PopulateUtils:Integer:1:100} sauc metodi Integer klase %PopulateUtils, garÄmejoÅ”i argumenti 1 Šø 100, atgriežot nejauÅ”u veselu skaitli diapazonÄ 1...100.
PÄrbaudi biznesa procesu
Testa produkti un testa biznesa procesi pÄc noklusÄjuma ir pieejami kÄ daļa no Python Gateway. Lai tos izmantotu:
OS terminÄlÄ« palaidiet: pip install pandas matplotlib seaborn.
InterSystems IRIS terminÄlÄ« palaidiet: do ##class(isc.py.test.CannibalizationData).Import() lai aizpildÄ«tu testa datus.
Izlaist produktus isc.py.test.Production.
SÅ«tÄ«t pieprasÄ«juma veids Ens.Request Š² isc.py.test.Process.
ApskatÄ«sim, kÄ tas viss darbojas kopÄ. AtvÄrt isc.py.test.Process BPL redaktorÄ:
Koda izpilde
VissvarÄ«gÄkais izaicinÄjums ir Python koda izpilde:
VaicÄjums izmantots isc.py.msg.ExecutionRequest, Å”eit ir tÄs Ä«paŔības:
Code - Python kods.
SeparateLines ā vai sadalÄ«t kodu rindÄs izpildei. $c(10) (n) tiek izmantots, lai atdalÄ«tu virknes. LÅ«dzu, Åemiet vÄrÄ, ka NAV ieteicams apstrÄdÄt visu ziÅojumu uzreiz, Ŕī funkcija ir paredzÄta tikai apstrÄdei def un lÄ«dzÄ«gas daudzrindu izteiksmes. NoklusÄjums 0.
Variables ā ar komatu atdalÄ«tu mainÄ«go lielumu saraksts, kas tiks pievienoti atbildei.
Serialization ā KÄ serializÄt mainÄ«gos, kurus vÄlamies atgriezt. IespÄjas: Str, Repr, JSON, Pickle Šø Dill, noklusÄjuma Str.
MÅ«su gadÄ«jumÄ mÄs nosakÄm tikai Ä«paÅ”umu Code, tÄpÄc visi pÄrÄjie rekvizÄ«ti izmanto noklusÄjuma vÄrtÄ«bas. IestatÄ«jÄm zvanot process.GetAnnotation("Import pandas"), kas izpildes laikÄ atgriež anotÄciju pÄc mainÄ«gÄ aizstÄÅ”anas. Galu galÄ, kods import pandas as pd tiks nodots Python. GetAnnotation var bÅ«t noderÄ«ga vairÄku rindu Python skriptu iegÅ«Å”anai, taÄu Å”ai koda iegÅ«Å”anas metodei nav ierobežojumu. Varat iestatÄ«t Ä«paÅ”umu Code jebkurÄ jums ÄrtÄ veidÄ.
Mainīgo iegūŔana
VÄl viens interesants izaicinÄjums, izmantojot isc.py.msg.ExecutionRequest SÄkot no Correlation Matrix: Tabular:
Tas aprÄÄ·ina korelÄcijas matricu Python pusÄ un izÅem mainÄ«go corrmat atpakaļ uz InterSystems IRIS JSON formÄtÄ, iestatot pieprasÄ«juma rekvizÄ«tus:
Un, ja mums ir nepiecieÅ”ama Ŕī vÄrtÄ«ba BP, mÄs to varam iegÅ«t Å”Ädi: callresponse.Variables.GetAt("corrmat").
Datu pÄrsÅ«tÄ«Å”ana
TÄlÄk parunÄsim par datu pÄrsÅ«tÄ«Å”anu no InterSystems IRIS uz Python; visi datu pÄrsÅ«tÄ«Å”anas pieprasÄ«jumi Ä«steno saskarni isc.py.msg.DataRequestkas nodroÅ”ina Å”Ädas Ä«paŔības:
Variable ā Python mainÄ«gais, kurÄ tiek ierakstÄ«ti dati.
Type ā mainÄ«gais tips: dataframe (pandas datu rÄmis) vai list.
Namespace ā apgabals, no kura mÄs saÅemam datus. Plastmasas maisiÅÅ” isc.py jÄbÅ«t pieejamam Å”ajÄ jomÄ. Tas var bÅ«t apgabals bez produktu atbalsta.
Pamatojoties uz Ŕo saskarni, tiek ieviestas 4 pieprasījumu klases:
isc.py.msg.QueryRequest - iestatÄ«t Ä«paÅ”umu Query lai nosÅ«tÄ«tu SQL vaicÄjumu.
isc.py.msg.ClassRequest - iestatīt īpaŔumu Class lai nodotu klases datus.
isc.py.msg.TableRequest - iestatÄ«t Ä«paÅ”umu Table lai pÄrsÅ«tÄ«tu tabulas datus.
isc.py.msg.GlobalRequest - iestatÄ«t Ä«paÅ”umu Global globÄlai datu pÄrsÅ«tÄ«Å”anai.
Visbeidzot, mÄs varam saglabÄt Python kontekstu programmÄ InterSystems IRIS, lai to izdarÄ«tu, mÄs to nosÅ«tÄ«sim isc.py.msg.SaveRequest ar argumentiem:
Mask ā Tiek saglabÄti tikai tie mainÄ«gie, kas atbilst maskai. AtbalstÄ«ts * Šø ?. PiemÄrs: "Data*, Figure?"... NoklusÄjuma *.
MaxLength ā saglabÄtÄ mainÄ«gÄ lieluma maksimÄlais garums. Ja mainÄ«gÄ serializÄcija ir garÄka, tas tiks ignorÄts. Iestatiet uz 0, lai iegÅ«tu jebkura garuma mainÄ«gos. NoklusÄjums $$$MaxStringLength.
Atgriežas Ens.StringResponse Ń Id saglabÄts konteksts. PÄrbaudes procesÄ apskatiet darbÄ«bu Save Context.
SaistÄ«ts pieprasÄ«jums isc.py.msg.RestoreRequest ielÄdÄ kontekstu no InterSystems IRIS programmÄ Python:
ContextId ā konteksta identifikators.
Clear ā pirms atjaunoÅ”anas notÄ«riet kontekstu.
Jupyter piezÄ«mju grÄmatiÅa
Jupyter piezÄ«mju grÄmatiÅa ir atvÄrtÄ pirmkoda tÄ«mekļa lietojumprogramma, kas ļauj izveidot un publicÄt piezÄ«mju grÄmatiÅas, kurÄs ir kods, vizualizÄcijas un teksts. Python Gateway ļauj skatÄ«t un rediÄ£Ät BPL procesus Jupyter piezÄ«mjdatora veidÄ. LÅ«dzu, Åemiet vÄrÄ, ka paÅ”laik tiek izmantots parastais Python 3 izpildÄ«tÄjs.
Å is paplaÅ”inÄjums pieÅem, ka anotÄcijÄs ir ietverts Python kods, un kÄ iepriekÅ”Äjie nosaukumi tiek izmantoti darbÄ«bu nosaukumi. Tagad ir iespÄjams izstrÄdÄt PythonGateway biznesa procesus Jupyter piezÄ«mjdatorÄ. TÄlÄk ir norÄdÄ«ts, kas ir iespÄjams.
MLToolkit ir rÄ«ku komplekts, kura mÄrÄ·is ir apvienot modeļus un darÄ«jumu vidi, lai izveidotos modeļus varÄtu viegli izmantot tieÅ”i jÅ«su biznesa procesos. Python Gateway ir daļa no MLToolkit un nodroÅ”ina integrÄciju ar Python valodu, ļaujot jums organizÄt jebkuru Python (daudzu datu zinÄtnieku galvenÄ vide) izveidotos maŔīnmÄcÄ«Å”anÄs algoritmus, izmantot daudzas gatavas bibliotÄkas, lai Ätri izveidotu adaptÄ«vu, robotizÄtu analÄ«tisko AI / ML risinÄjumi InterSystems platformÄ IRIS.
MLToolkit lietotÄju grupa ir privÄta GitHub repozitorijs, kas izveidots kÄ daļa no InterSystems korporatÄ«vÄs GitHub organizÄcijas. Tas ir paredzÄts ÄrÄjiem lietotÄjiem, kuri instalÄ, mÄcÄs vai jau izmanto MLToolkit komponentus, tostarp Python Gateway. Grupai ir vairÄkas ieviestas lietas (ar pirmkodu un testu datiem) mÄrketinga, ražoÅ”anas, medicÄ«nas un daudzu citu nozaru jomÄs. Lai pievienotos ML Toolkit lietotÄju grupai, lÅ«dzu, nosÅ«tiet Ä«su e-pastu uz Å”Ädu adresi: [e-pasts aizsargÄts] un savÄ vÄstulÄ iekļaujiet Å”Ädu informÄciju:
GitHub lietotÄjvÄrds
OrganizÄcija (jÅ«s strÄdÄjat vai mÄcÄties)
Amats (jÅ«su faktiskais amats jÅ«su organizÄcijÄ, vai nu "Students" vai "NeatkarÄ«gs").
Valsts
Tiem, kuri ir izlasÄ«juÅ”i rakstu un interesÄjas par InterSystems IRIS iespÄjÄm kÄ mÄkslÄ«gÄ intelekta un maŔīnmÄcÄ«Å”anÄs dzinÄju izstrÄdes vai mitinÄÅ”anas platformu, mÄs aicinÄm jÅ«s apspriest iespÄjamos scenÄrijus, kas interesÄ jÅ«su uzÅÄmumu. MÄs labprÄt analizÄsim JÅ«su uzÅÄmuma vajadzÄ«bas un kopÄ«gi izstrÄdÄsim rÄ«cÄ«bas plÄnu; MÅ«su AI/ML ekspertu komandas saziÅas e-pasta adrese ā [e-pasts aizsargÄts].