Ky artikull Ă«shtĂ« mbi Python Gateway â njĂ« projekt komuniteti me kod tĂ« hapur pĂ«r platformĂ«n e tĂ« dhĂ«nave InterSystems IRIS. Ky projekt lejon orkestrimin e çdo algoritmi tĂ« mĂ«simit nĂ« makinĂ« tĂ« ndĂ«rtuar nĂ« gjuhĂ«n Python (mjedisi kryesor pĂ«r shumĂ« ShkencĂ«tarĂ« tĂ« TĂ« DhĂ«nave), duke pĂ«rdorur biblioteka tĂ« shumta tĂ« gatshme pĂ«r tĂ« krijuar shpejt analiza adaptyve AI/ML nĂ« platformĂ«n InterSystems IRIS. NĂ« kĂ«tĂ« artikull, unĂ« do tĂ« tregoj se si InterSystems IRIS mund tĂ« orkestrojĂ« proceset nĂ« gjuhĂ«n Python, duke realizuar nĂ« mĂ«nyrĂ« efikase transferimin bidirezional tĂ« tĂ« dhĂ«nave dhe krijimin e proceseve inteligjente tĂ« biznesit.
Plani
- Hyrje.
- Vegël.
- Instalimi.
- API.
- Interoperabiliteti.
- Jupyter Notebook.
- Përfundime.
- Referencat.
- MLToolkit.
Hyrje
Python është një gjuhë programimi e nivelit të lartë me qëllim të përgjithshëm, e orientuar drejt rritjes së produktivitetit të zhvilluesit dhe lexueshmërisë së kodit. Në këtë seri artikujsh, unë do të flas për mundësitë e përdorimit të gjuhës Python në platformën InterSystems IRIS, ndërsa fokusi kryesor i këtij artikulli është përdorimi i Python si gjuhë për krijimin dhe aplikimin e modeleve të mësimit të makinë.
Mësimi me makinë (ML) është një klasë metodash të inteligjencës artificiale, ku karakteristika dalluese është se zgjidhja e problemit nuk bëhet drejtpërdrejt, por përmirësohet gjatë zgjidhjes së shumë problemeve të ngjashme.
Algoritmet dhe modelet e mësimit me makinë po bëhen gjithnjë e më të zakonshme. Ka shumë arsye për këtë, por gjithçka zvogëlohet në aksesibilitetin, thjeshtësinë dhe arritjen e rezultateve praktike. A është klasterizimi apo madje modelimi me rrjeta nervore një teknologji e re?
Sigurisht që jo, por aktualisht nuk ka nevojë të shkruani qindra mijëra rreshta kodi për të vogëluar një model, ndërsa shpenzimet për krijimin dhe zbatimin e modeleve po zvogëlohen vazhdimisht.
Mjetet po zhvillohen â ndĂ«rsa nuk kemi mjete tĂ« plotĂ« tĂ« orientuara nga GUI pĂ«r AI/ML, pĂ«rparimi qĂ« kemi vĂ«zhguar nĂ« shumĂ« klasifikime tĂ« tjera tĂ« sistemeve informatikĂ«, p.sh. BI (nga kodimi nĂ« pĂ«rdorimin e kornizave dhe zgjidhjeve tĂ« konfigurueshme tĂ« orientuara nga GUI), po ndodh gjithashtu nĂ« mjetet pĂ«r krijimin e AI/ML. Ne tashmĂ« kemi kaluar fazĂ«n e kodimit dhe sot pĂ«rdorim korniza pĂ«r tĂ« ndĂ«rtuar dhe trajnuar modelet.
Përmirësime të tjera, të tilla si mundësia për të shpërndarë modelin e trajnuar paraprakisht, ku përdoruesi i fundit duhet të përfundojë thjesht trajnimin e modelit në të dhënat e tij specifike, gjithashtu e thjeshton fillimin e përdorimit të mësimit të makinerisë. Këto arritje ndihmojnë ndjeshëm në studimin e mësimit të makinerisë si për specialistët, ashtu edhe për kompanitë në përgjithësi.
Nga ana tjetër, ne po mbledhim gjithnjë e më shumë të dhëna. Falë një platforme të unifikuar të të dhënave, si InterSystems IRIS, gjithë kjo informacion mund të përgatitet menjëherë dhe të përdoret si të dhëna burimore për modelet e mësimit të makinerisë.
Me kalimin në cloud, nisja e projekteve AI/ML bëhet më e lehtë se kurrë. Ne mund të konsumojmë vetëm ato resurse që na nevojiten. Për më tepër, falë paralelizimit që ofrojnë platformat cloud, mund të kursejmë kohën e shpenzuar.
Por çfarĂ« bĂ«het fjalĂ« pĂ«r rezultatet? KĂ«tu gjĂ«rat komplikohen. EkzistojnĂ« shumĂ« mjete pĂ«r ndĂ«rtimin e modeleve, pĂ«r tĂ« cilat do tĂ« flas mĂ« tej. TĂ« ndĂ«rtosh njĂ« model tĂ« mirĂ« nuk Ă«shtĂ« e lehtĂ«, por çfarĂ« vjen mĂ« pas? TĂ« nxjerrĂ«sh pĂ«rfitime nga pĂ«rdorimi i modelit nga biznesi Ă«shtĂ« gjithashtu njĂ« detyrĂ« e komplikuar. RrĂ«nja e problemit qĂ«ndron nĂ« ndarjen e ngarkesave analitike dhe transaksionet, dhe modelet e dhĂ«nash. Kur e trajnojmĂ« modelin, zakonisht e bĂ«jmĂ« kĂ«tĂ« me tĂ« dhĂ«na historike. Por vendi pĂ«r modelin e ndĂ«rtuar Ă«shtĂ« nĂ« pĂ«rpunimin transaksional tĂ« tĂ« dhĂ«nave. ĂfarĂ« do tĂ« thotĂ« tĂ« kesh modelin mĂ« tĂ« mirĂ« pĂ«r zbulimin e transaksioneve tĂ« mashtrimit, nĂ«se e ekzekutojmĂ« atĂ« njĂ« herĂ« nĂ« ditĂ«? Mashtruesit tashmĂ« janĂ« larguar me paratĂ«. Na nevojitet tĂ« trajnojmĂ« modelin me tĂ« dhĂ«na historike, por gjithashtu duhet ta aplikojmĂ« atĂ« nĂ« kohĂ« reale me tĂ« dhĂ«nat qĂ« vijnĂ«, nĂ« mĂ«nyrĂ« qĂ« proceset tona tĂ« mund tĂ« veprojnĂ« sipas parashikimeve tĂ« bĂ«ra nga modeli.
ML Toolkit â njĂ« grup mjetesh, qĂ«llimi i tĂ« cilit Ă«shtĂ« pikĂ«risht ky: tĂ« bashkojĂ« modelet dhe mjedisin transaksional, nĂ« mĂ«nyrĂ« qĂ« modelet e ndĂ«rtuara tĂ« mund tĂ« pĂ«rdoren lehtĂ«sisht nĂ« proceset tuaja biznesore. Python Gateway Ă«shtĂ« njĂ« pjesĂ« e ML Toolkit dhe ofron integrim me gjuhĂ«n Python (ngjashĂ«m si R Gateway, qĂ« gjithashtu Ă«shtĂ« pjesĂ« e ML Toolkit dhe ofron integrim me gjuhĂ«n R).
Instrumentari
Para se të vazhdojmë, do të doja të përshkruaja disa mjete dhe biblioteka për Python që do të përdorim më vonë.
Teknologji
- Python është një gjuhë programimi e interpretueshme, me nivel të lartë dhe që ka një qëllim të përgjithshëm. Avantazhi kryesor i gjuhës është biblioteka e saj e madhe matematikore, ML dhe AI. Si ObjectScript, ajo është një gjuhë objekt-orientuar, por gjithçka përcaktohet dinamikisht, dhe jo statikisht. Gjithashtu, gjithçka është objekt. Artikujt e mëvonshëm supozojnë një njohje të kalimtare me gjuhën. Nëse dëshiron të fillosh mësimin, rekomandoj të fillosh me .
- Për ushtrimet tona të ardhshme, instaloni .
- IDE: Unë përdor , por përgjithësisht ka . Nëse përdorni Atelier, ka një plugin Eclipse për zhvilluesit në Python. Nëse përdorni VS Code, ka një shtesë për Python.
- Notebook: në vend të IDE-së, mund të shkruani dhe ndaheni me skriptet tuaja në notebook-e online. Notebook-u më i njohur është .
Bibliotekat
Ja një listë (e paplotë) e bibliotekave për mësim në makinë:
- â paketi themelor pĂ«r llogaritjet e sakta.
- â struktura tĂ« dhĂ«nash me performancĂ« tĂ« lartĂ« dhe instrumente pĂ«r analizĂ«n e tĂ« dhĂ«nave.
- â krijimi i grafikĂ«ve.
- â vizualizimi i tĂ« dhĂ«nave, i bazuar nĂ« matplotlib.
- â metoda tĂ« mĂ«simit tĂ« makinave.
- â algoritme tĂ« mĂ«simit tĂ« makinave nĂ« kuadĂ«r tĂ« metodologjisĂ« sĂ« pĂ«rmirĂ«simit tĂ« gradienit (Gradient Boosting).
- â NLP.
- â rrjetet neuronale.
- â njĂ« platformĂ« pĂ«r ndĂ«rtimin e modeleve tĂ« mĂ«simit tĂ« makinave.
- â njĂ« platformĂ« pĂ«r ndĂ«rtimin e modeleve tĂ« mĂ«simit tĂ« makinave, e orientuar nĂ« Python.
- â PMML nga modelet e ndryshme.
Teknologjitë AI/ML lejojnë që biznesi të bëhet më efikas dhe adaptiv. Më shumë se kaq, sot këto teknologji po bëhen më të thjeshta për zhvillim dhe implementim. Filloni të studioni teknologjitë AI/ML dhe se si ato mund të ndihmojnë organizatën tuaj të rritet.
Instalimi
Ka Ï ÏÎŹÏÏÎżÏ Îœ disa mĂ«nyra pĂ«r tĂ« instaluar dhe pĂ«rdorur Python Gateway:
- sistemin operativ
- Windows
- Linux
- Mac
- Docker
- Përdorni imazhin nga DockerHub
- Krijoni imazhin tuaj
Pavarësisht nga mënyra e instalimit, do t'ju duhet kodi burimor. Vendi i vetëm për të shkarkuar kodin është . Ajo përmban lëshime stabile të testuara, thjesht merrni të fundit. Aktualisht kjo është 0.8, por me kalimin e kohës do të ketë edhe të reja. Mos e klononi/ngarkoni repozitorin, shkarkoni lëshimin e fundit.
sistemin operativ
Nëse po instaloni Python Gateway në një sistem operativ, fillimisht (pavarësisht nga sistemi operativ) do t'ju nevojitet të instaloni Python. Për këtë:
- . Rekomandohet të instaloni Python në direktorinë e paracaktuar.
- Instaloni modul
dill:pip install dill. - Shkarkoni kodin ObjectScript (dmth.
do $system.OBJ.ImportDir("C:InterSystemsReposPythoniscpy", "*.cls", "c",,1)) në çdo zonë me produkte. Në rast se dëshironi që zona ekzistuese të mbështesë produkte, kryeni:write ##class(%EnsembleMgr).EnableNamespace($Namespace, 1). - Vendosni në dosjen
bine instancës suaj InterSystems IRIS. Skedari i bibliotekës duhet të jetë i disponueshëm në rrugën që kthenwrite ##class(isc.py.Callout).GetLib().
Windows
- Sigurohuni që variabla e ambientit
PYTHONHOMEtregon Python 3.6.7. - Sigurohuni që variabla sistemike e ambientit
PATHpërmban variablënPYTHONHOME(ose direktorinë që ajo tregon).
Linux (Debian/Ubuntu)
- Kontrolloni që variabla e ambientit
PATHpërmban/usr/libdhe/usr/lib/x86_64-linux-gnu. Përdorni skedarin/etc/environmentpër të vendosur variablat e ambientit. - Në rast gabimesh
simbol i paemëruar: _Py_TrueStructvendosni cilësiminPythonLib. Po ashtu, në ka një seksion për Troubleshooting.
Mac
- Aktualisht mbështetet vetëm Python 3.6.7 nga . Kontrolloni variablën
PATH.
Nëse keni ndryshuar variablat e ambientit, rilidheni produktin tuaj InterSystems.
Docker
Përdorimi i enëve ka një sërë përfitimesh:
- Portabiliteti
- Efikasiteti.
- Izolimi
- Lehtësia
- Imutabiliteti
Shikoni këtë për më shumë informacion në lidhje me përdorimin e Docker me produktet InterSystems.
Të gjitha ndërtimet e Python Gateway aktualisht bazohen në enë 2019.4.
Imazhi i gatshëm
Ekzekutoni: docker run -d -p 52773:52773 --name irispy intersystemscommunity/irispy-community:latest, për të shkarkuar dhe nisur Python Gateway me InterSystems IRIS Community Edition. Këtu jemi.
Krijoni imazhin tuaj
Për të ndërtuar imazhin e docker, ekzekutoni në rrënjën e repository-t: docker build --force-rm --tag intersystemscommunity/irispy:latest ..
Për default, imazhi ndërtohet mbi imazhin store/intersystems/iris-community:2019.4.0.383.0, megjithatë mund ta ndryshoni këtë duke caktuar ndryshoren IMAGE.
Për të ndërtuar nga InterSystems IRIS, ekzekutoni: `docker build --build-arg IMAGE=store/intersystems/iris:2019.4.0.383.0 --force-rm --tag intersystemscommunity/irispy:latest`.
Pas kësaj, mund të nisni imazhin docker:
docker run -d
-p 52773:52773
-v //:/mount
--name irispy
intersystemscommunity/irispy:latest
--key /mount/iris.keyNëse po përdorni një imazh të bazuar në InterSystems IRIS Community Edition, nuk keni nevojë të specifikoni çelësin.
Komentet
- Procesi i testimit
isc.py.test.Processruan një sërë imazhesh në një katalog përkohësor. Mund të dëshironi të ndryshoni këtë rrugë në katalogun e montuar. Për të bërë këtë, redaktoni cilësiminWorkingDirduke specifikuar direktorinë e montuar. - Për të hyrë në terminal, ekzekutoni:
docker exec -it irispy sh. - Qasja në Portalin e Menaxhimit të Sistemit me identifikimin
SuperUser/SYS. - Për të ndaluar kontenierin, ekzekutoni:
docker stop irispy && docker rm --force irispy.
Kontrolli i instalimit
Pas instalimit të Python Gateway, është mirë të kontrolloni nëse funksionon. Ekzekutoni këtë kod në terminalin e InterSystems IRIS:
set sc = ##class(isc.py.Callout).Setup()
set sc = ##class(isc.py.Main).SimpleString("x='HELLO'", "x", , .var).
write varSi duhet tĂ« shfaqet HELLO â vlera e variablĂ«s Python x. NĂ«se statusi i kthyer sc Ă«shtĂ« njĂ« gabim ose var Ă«shtĂ« bosh, kontrolloni .
API
Python Gateway Ă«shtĂ« instaluar dhe ju keni verifikuar qĂ« po punon. ĂshtĂ« koha ta filloni pĂ«rdorimin!
Intërfaci kryesor për Python është isc.py.Main. Ai ofron grupet e mëposhtme të metodave (të gjitha kthejnë %Status):
- Ekzekutimi i kodit
- Transferta e të dhënave
- TĂ« ndihmueshme
Ekzekutimi i kodit
Këto metoda lejojnë ekzekutimin e kodit të rastësishëm Python.
SimpleString
SimpleString â Ă«shtĂ« metoda kryesore. Ajo pranon 4 argumente opsionale:
kodeâ njĂ« varg kodi pĂ«r ekzekutim. Simboli i kalimit nĂ« rresht:$c(10).returnVariableâ emri i variablĂ«s pĂ«r t'u kthyer.serializationâ si tĂ« serializonireturnVariable. 0 â string (me tĂ« drejtat e paracaktuar), 1 â repr.resultâ ReferencĂ« ByRef nĂ« variablĂ«n ku ruhet vlerareturnVariable.
MĂ« lart ne ekzekutuam:
set sc = ##class(isc.py.Main).SimpleString("x='HELLO'", "x", , .var).Në këtë shembull ne i japim variablës Python x vlerën Hello dhe duam të kthejmë vlerën e variablës Python x në variablën ObjectScript var.
ExecuteCode
ExecuteCode është një alternativë më e sigurt dhe më pak e kufizuar SimpleString.
Rreshtat në platformën InterSystems IRIS janë të kufizuara në 3 641 144 karaktere, dhe nëse dëshironi të ekzekutoni një kod më të gjatë, duhet të përdorni rrjedha.
Pranohet dy argumente:
kodeâ njĂ« string ose rrjedhĂ« kode Python pĂ«r ekzekutim.variabĂ«lâ (opsionale) cakton rezultatin e ekzekutimitkodenĂ« kĂ«tĂ« variabĂ«l Python.
Shembuj përdorimi:
set sc = ##class(isc.py.Main).ExecuteCode("2*3", "y").Në këtë shembull ne shumëzojmë 2 me 3 dhe regjistrojmë rezultatin në një variabël Python. y.
Transferta e të dhënave
Kalon të dhënat në Python dhe përsëri.
Python -> InterSystems IRIS
Ka 4 mënyra për të marrë vlerën e një variabli Python në InterSystems IRIS, në varësi të serializimit që ju nevojitet:
Stringpër tipe të thjeshta të të dhënave dhe për debuggim.Reprpër ruajtjen e objekteve të thjeshta dhe për debuggim.JSONpër manipulimin e lehtë të të dhënave në anën e InterSystems IRIS.Picklepër ruajtjen e objekteve.
Këto metoda lejojnë marrjen e variablave nga Python si stringa ose rrjedha.
GetVariable(variable, serialization, .stream, useString)â merrserializationvariabĂ«lvariabĂ«lnĂ«stream. NĂ«seuseStringnĂ«se Ă«shtĂ« 1 dhe serializimi vendoset nĂ« njĂ« string, atĂ«herĂ« kthehet njĂ« string dhe jo njĂ« rrjedhĂ«.GetVariableJson(variable, .stream, useString)â merr serializimin JSON tĂ« variablit.GetVariablePickle(variable, .stream, useString, useDill)- merr serializimin Pickle (ose Dill) tĂ« variablit.
Le të provojmë të marrim ndryshoren tonë y.
set sc = ##class(isc.py.Main).GetVariable("y", , .val, 1)
write val
>6InterSystems IRIS -> Python
Duke ngarkuar të dhënat nga InterSystems IRIS në Python.
ExecuteQuery(query, variable, type, namespace)â krijon njĂ« set tĂ« dhĂ«nash (pandasdataframeoselistĂ«) nga kĂ«rkesa sql dhe e vendos atĂ« nĂ« njĂ« ndryshore PythonvariabĂ«l. Paketaisc.pyduhet tĂ« jetĂ« e qasshme nĂ«namespaceâ aty do tĂ« ekzekutohet kĂ«rkesa.ExecuteGlobal(global, variable, type, start, end, mask, labels, namespace)â ngarkon tĂ« dhĂ«nat nga globalglobalnga subscriptstartderi teendnĂ« Python si njĂ« ndryshore e tipittype:listĂ«, ose pandasdataframe. PĂ«rshkrimi i argumenteve opsionalemaskandetiketatĂ«shtĂ« nĂ« dispozicion nĂ« dokumentacionin e klasĂ«s dhe nĂ« repozitorin .ExecuteClass(class, variable, type, start, end, properties, namespace)â ngarkon tĂ« dhĂ«nat nga klasaclassnga idstartderi teendnĂ« Python si njĂ« ndryshore e tipittype:listĂ«, ose pandasdataframe.propertietetâ lista (ndarĂ«si â presje) e atyre pronarive tĂ« klasĂ«s qĂ« duhen ngarkuar nĂ« setin e tĂ« dhĂ«nave. Maskat pĂ«rkrahĂ«n*dhe?. Nga e_default_ â*(tĂ« gjitha pronat). Prona%%CLASSNAMEinjorohet.ExecuteTable(table, variable, type, start, end, properties, namespace)â ngarkon tĂ« dhĂ«nat nga tabelatavolinanga idstartderi teendnĂ« Python.
ExecuteQuery â Ă«shtĂ« universale (çdo kĂ«rkesĂ« SQL e saktĂ« do tĂ« dĂ«rgohet nĂ« Python). MegjithatĂ«, ExecuteGlobal dhe mbĂ«shtjellĂ«sit e tij ExecuteClass dhe ExecuteTable punojnĂ« me njĂ« mori kufizimesh. Ato janĂ« shumĂ« mĂ« tĂ« shpejta (3-5 herĂ« mĂ« shpejt se ODBC driver dhe 20 herĂ« mĂ« shpejt) ExecuteQuery). Informacioni shtesĂ« nĂ« .
Të gjitha këto metoda mbështesin transferimin e të dhënave nga çdo fushë. Paketa isc.py duhet të jetë e aksesueshme në fushën e synuar.
ExecuteQuery
ExecuteQuery(request, variable, type, namespace) â transferimi i rezultateve tĂ« çdo kĂ«rkese SQL valide nĂ« Python. Ky Ă«shtĂ« metoda mĂ« e ngadaltĂ« e transferimit tĂ« tĂ« dhĂ«nave. PĂ«rdoreni atĂ« nĂ«se ExecuteGlobal dhe mbĂ«shtjellĂ«sit e tij nuk janĂ« tĂ« aksesueshĂ«m.
Argumentet:
queryâ kĂ«rkesa sql.variabĂ«lâ emri i variablit Python nĂ« tĂ« cilin janĂ« shkruar tĂ« dhĂ«nat.typeâlistĂ«ose Pandasdataframe.namespaceâ fusha nĂ« tĂ« cilĂ«n do tĂ« ekzekutohet kĂ«rkesa.
ExecuteGlobal
ExecuteGlobal(global, variable, type, start, end, mask, labeels, namespace) â transferimi i globalit nĂ« Python.
Argumentet:
globalâ emri i globalit pa^variabĂ«lâ emri i variablit Python nĂ« tĂ« cilin janĂ« shkruar tĂ« dhĂ«nat.typeâlistĂ«ose Pandasdataframe.startâ subskripti i parĂ« i globalit. Kjo Ă«shtĂ« e domosdoshme%Integer.endâ subskripti i fundit i globalit. Kjo Ă«shtĂ« e domosdoshme%Integer.maskâ maska e vlerave tĂ« globalit. Maska mund tĂ« jetĂ« mĂ« e shkurtĂ«r se numri i fushave nĂ« global (nĂ« kĂ«tĂ« rast fushat nĂ« fund do tĂ« kalohen). Si tĂ« formatoni maskĂ«n:+tĂ« kaloni vlerĂ«n siç Ă«shtĂ«.-tĂ« kaloni vlerĂ«n.bâ Tipi logjik (0âFalse, gjithçka tjetĂ«r âTrue).dâ Data (nga $horolog, nĂ« Windows nga 1970, nĂ« Linux nga 1900).tâ Koha ($horolog, sekonda pas mesnatĂ«s).mâ Marka e kohĂ«s (string formati VIT-MUAJ-DIT ORA:MIRAT:SEKOND).
etiketatâ %List emrash kolonash. elementi i parĂ« â emri i subskrit.namespaceâ fusha nĂ« tĂ« cilĂ«n do tĂ« ekzekutohet kĂ«rkesa.
ExecuteClass
Mbështjellës mbi ExecuteGlobal. Bazuar në përcaktimin e klasës përgatit thirrjen ExecuteGlobal dhe e thërret atë.
ExecuteClass(class, variable, type, start, end, properties, namespace) â kalimi i tĂ« dhĂ«nave tĂ« klasĂ«s nĂ« Python.
Argumentet:
classâ emri i klasĂ«svariabĂ«lâ emri i variablit Python nĂ« tĂ« cilin janĂ« shkruar tĂ« dhĂ«nat.typeâlistĂ«ose Pandasdataframe.startâ Id fillestar.endâ Id pĂ«rfundimtarpropertietetâ lista (ndarĂ«si â presje) e atyre pronarive tĂ« klasĂ«s qĂ« duhen ngarkuar nĂ« setin e tĂ« dhĂ«nave. Maskat pĂ«rkrahĂ«n*dhe?. Nga e_default_ â*(tĂ« gjitha pronat). Prona%%CLASSNAMEinjorohet.namespaceâ fusha nĂ« tĂ« cilĂ«n do tĂ« ekzekutohet kĂ«rkesa.
TĂ« gjitha pronat kalojnĂ« ashtu si janĂ« pĂ«rveç pronave tĂ« tipeve %Date, %Koha, %Boolean dhe %TimeStamp â ato konvertohen nĂ« klasat pĂ«rkatĂ«se Python.
ExecuteTable
Mbështjellës mbi ExecuteClass. Transmiton emrin e tabelës në emrin e klasës dhe e thërret ExecuteClass. Nënshkrimi:
ExecuteTable(table, variable, type, start, end, properties, namespace) â kalimi i tĂ« dhĂ«nave tĂ« tabelĂ«s nĂ« Python.
Argumentet:
tavolinaâ emri i tabelĂ«s.
Të gjitha argumentet e tjera kalojnë ashtu si janë nëExecuteClass.
Vërejtjet
ExecuteGlobal,ExecuteClassdheExecuteTablepunojnĂ« po aq shpejt.ExecuteGlobal20 herĂ« mĂ« shpejt seExecuteQuerynĂ« grupe tĂ« mĂ«dha tĂ« dhĂ«nash (koha e kalimit mĂ« e madhe se >0.01 sekonda).ExecuteGlobal,ExecuteClassdheExecuteTablepunojnĂ« nĂ« globalet me kĂ«tĂ« strukturĂ«:^global(key) = $lb(prop1, prop2, ..., propN)kukeyâ numĂ«r i plotĂ«.- PĂ«r
ExecuteGlobal,ExecuteClassdheExecuteTablerezultati i mbështetur%Datepërputhet memktimedhe varet nga OS (: 1970-01-01, 1900-01-01, ). Përdorni%TimeStamppër të kaluar të dhënat jashtë këtij diapazoni ose përdorni pandas dataframe sepse kjo është një kufizim vetëm për listën. - Për
ExecuteGlobal,ExecuteClassdheExecuteTabletë gjitha argumentet përveç burimit të të dhënave (globalit, klasës ose tabelës) dhe variablit janë opsionale.
Shembuj
Klasa testuese përmban një metodë që demonstrojnë të gjitha variantet e kalimit të të dhënave:
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"
// Argumentet e përgjithshme
set variable = "df"
set type = "dataframe"
set start = 1
set end = $g(^isc.py.test.PersonD, start)
// Metoda 0: ExecuteGlobal pa argumente
set sc = ##class(isc.py.Main).ExecuteGlobal(global, variable _ 0, type)
// Metoda 1: ExecuteGlobal me argumente
// Kur dërgoni globalin, emrat e fushave caktohen manualisht
// globalKey - emri i subskryptit
set labels = $lb("globalKey", "Name", "DOB", "TS", "RandomTime", "AgeYears", "AgeDecimal", "AgeDouble", "Bool")
// mask përmban një element më pak se labels sepse "globalKey" - emri i subskryptit
// Anashkalojmë %%CLASSNAME
set mask = "-+dmt+++b"
set sc = ##class(isc.py.Main).ExecuteGlobal(global, variable _ 1, type, start, end, mask, labels)
// Metoda 2: ExecuteClass
set sc = ##class(isc.py.Main).ExecuteClass(class, variable _ 2, type, start, end)
// Metoda 3: ExecuteTable
set sc = ##class(isc.py.Main).ExecuteTable(table, variable _ 3, type, start, end)
// Metoda 4: ExecuteTable
set sc = ##class(isc.py.Main).ExecuteQuery(query, variable _ 4, type)Thirrni metodo do ##class(isc.py.test.Person).Test() për të parë si funksionojnë të gjitha metodat e transmetimit të të dhënave.
Metodat ndihmëse
GetVariableInfo(variable, serialization, .defined, .type, .length)â merr informacion nĂ« lidhje me variablĂ«n: nĂ«se Ă«shtĂ« e pĂ«rcaktuar, klasa dhe gjatĂ«sia e serializimit.GetVariableDefined(variable, .defined)â nĂ«se variabla Ă«shtĂ« e pĂ«rcaktuar.GetVariableType(variable, .type)â merrni klasin e variablit.GetStatus()â merrni dhe largoni pĂ«rjashtimin e fundit nga ana e Python.GetModuleInfo(module, .imported, .alias)â merrni variablĂ«n e modulit dhe statusin e importit.GetFunctionInfo(function, .defined, .type, .docs, .signature, .arguments)â merrni informacion nĂ« lidhje me funksionin.
Interoperabiliteti
Keni mësuar të thërrisni Python Gateway nga terminali, tani do të fillojmë ta përdorim atë në prodhim. Baza e ndërveprimit me Python në këtë modë është isc.py.ens.Operation. Ai na lejon të:
- Ekzekutojmë kodin në Python
- Ruajmë/Riparojmë kontekstin e Python
- Ngarkojmë dhe marrim të dhëna nga Python
Në parim, operacioni Python është një paketë mbi isc.py.Main. Operacioni isc.py.ens.Operation ofron mundësinë për të ndërvepruar me procesin Python nga prodhimet e InterSystems IRIS. Mbështeten pesë kërkesa:
isc.py.msg.ExecutionRequestpër ekzekutimin e kodit Python. Kthehetisc.py.msg.ExecutionResponseme rezultatin e ekzekutimit dhe vlerat e variablave të kërkuara.isc.py.msg.StreamExecutionRequestpër ekzekutimin e kodit Python. Kthehetisc.py.msg.StreamExecutionResponseme rezultatin e ekzekutimit dhe vlerat e variablave të kërkuara. Analogisc.py.msg.ExecutionRequest, por merr dhe kthen rrjedha në vend të vargjeve.isc.py.msg.QueryRequestpër dërgimin e rezultatit të ekzekutimit të kërkesës SQL. KthehetEns.Response.isc.py.msg.GlobalRequest/isc.py.msg.ClassRequest/isc.py.msg.TableRequestpër transferimin e të dhënave të globit/klasës/tabelës. KthenEns.Response.isc.py.msg.SaveRequestpër ruajtjen e kontekstit Python. KthenEns.StringResponseme identifikuesin e kontekstit.isc.py.msg.RestoreRequestpër rikthimin e kontekstit Python.Për më tepër,
isc.py.ens.Operationka dy konfigurime:Initializerâ zgjedhja e klasĂ«s qĂ« implementon ndĂ«rfaqenisc.py.init.Abstract. Ajo mund tĂ« pĂ«rdoret pĂ«r tĂ« ngarkuar funkciones, module, klasa, etj. Ekzekutohet njĂ« herĂ« nĂ« nisjen e procesit.PythonLibâ (vetĂ«m pĂ«r Linux) nĂ«se shihni gabime gjatĂ« ngarkimit, vendosni vlerĂ«n e saj nĂ«libpython3.6m.soose madje nĂ« rrugĂ«n e plotĂ« nĂ« bibliotekĂ«n Python.
Krijimi i proceseve biznesore
Janë të disponueshme dy klasa që lehtësojnë zhvillimin e proceseve biznesore:
isc.py.ens.ProcessUtilslejon të nxjerrësh annotimet nga aktivitete me zëvendësimin e variablave.isc.py.util.BPEmulatorlejon testimin e lehtë të proceseve biznesore me Python. Ai mund të ekzekutojë procesin biznesor (pjesët në gjuhën Python) në procesin aktual.
Zëvendësimi i variablave
Të gjithë proceset biznesore, të trashëguara nga isc.py.ens.ProcessUtils, mund të përdorin metodën GetAnnotation(name) për të marrë vlerën e annotimit të aktivitetit sipas emrit të saj. Annotimi i aktivitetit mund të përmbajë variabla, të cilat do të llogariten në anën e InterSystems IRIS para se të kalohen në Python. Këtu është sintaksa e zëvendësimit të variablave:
${class:method:arg1:...:argN}â thirrje e metodĂ«s#{expr}â ekzekuto kodin nĂ« gjuhĂ«n ObjectScript.
Një shembull është në dispozicion në procesin biznesor të testit isc.py.test.Process, për shembull, në aktivitetin Matrica e Korrellacionit: Graf: f.savefig(r'#{process.WorkDirectory}SHOWCASE${%PopulateUtils:Integer:1:100}.png'). Në këtë shembull:
#{process.WorkDirectory}kthen pronën WorkDirectory të objektitprocess, që është një instancë e klasësisc.py.test.Processp.sh. procesi aktual i biznesit.${%PopulateUtils:Integer:1:100}thirr një metodëIntegerklasës%PopulateUtils, duke kaluar argumentet1dhe100, duke kthyer një numër të rastit të plotë në intervalin1...100.
Procesi biznesor i testit
Produkti i testit dhe procesi biznesor i testit janë në dispozicion si pjesë e portës Python nga default. Për t'i përdorur ato:
- Ekzekutoni në terminalin e OS:
pip install pandas matplotlib seaborn. - Ekzekutoni në terminalin e InterSystems IRIS:
do ##class(isc.py.test.CannibalizationData).Import()për të mbushur të dhënat e testit. - Ekzekutoni produktin
isc.py.test.Production. - Dërgoni një kërkesë të tipit
Ens.Requestnëisc.py.test.Process.
Le të shohim si funksionon gjithçka së bashku. Hapni isc.py.test.Process në redaktorin BPL:

Ekzekutimi i kodit
Sfida më e rëndësishme është ekzekutimi i kodit Python:

Përdoret kërkesa isc.py.msg.ExecutionRequest, këtu janë karakteristikat e tij:
Kodiâ Kodi Python.SeparateLinesâ a duhet ta ndajĂ« kodin nĂ« rreshta pĂ«r ekzekutim.$c(10)(n) pĂ«rdoret pĂ«r tĂ« ndarĂ« rreshtat. Vini re se nuk rekomandohet tĂ« pĂ«rpunoni mesazhin nĂ« tĂ«rĂ«si njĂ«herĂ«sh, kjo funksion Ă«shtĂ« e destinuar vetĂ«m pĂ«r pĂ«rpunimindefdhe shprehje tĂ« ngjashme me shumĂ« rreshta. NĂ« mĂ«nyrĂ« tĂ« paracaktuar0.Variablatâ njĂ« listĂ« e ndarĂ« me presje e variablave, tĂ« cilat do tĂ« shtohen nĂ« pĂ«rgjigje.Serializationâ Si tĂ« serializoni variablĂ«t qĂ« dĂ«shirojmĂ« tĂ« kthejmĂ«. Opsionet:Str,Repr,JSON,PickledheDill, nĂ« mĂ«nyrĂ« tĂ« paracaktuarStr.
Në rastin tonë, ne thjesht po vendosim pronën Kodi, kështu që të gjitha pronat e tjera përdorin vlerat e paracaktuara. Ne e vendosim atë duke thirrur process.GetAnnotation("Import pandas"), e cila gjatë ekzekutimit kthen anotimin pas zëvendësimit të variablave. Në fund, kodi import pandas as pd do të dërgohet në Python. GetAnnotation mund të jetë e dobishme për të marrë skenarë Python me shumë rreshta, por nuk ka kufizime për këtë metodë të marrjes së kodit. Ju mund të vendosni pronën Kodi në cilëndo mënyrë që ju përshtatet.
Marrja e variablave
NjĂ« tjetĂ«r sfidĂ« interesante me pĂ«rdorimin e isc.py.msg.ExecutionRequest â Matrica e Korelacionit: Tabelar:

Ai llogarit Matriken e Korelacionit në anën e Python dhe ekstrapolon variablën corrmat për në InterSystems IRIS në formatin JSON, duke vendosur pronat e kërkesës:
Variablat:"corrmat"Serialization:"JSON"
Ne mund ta shohim rezultatin në Visual Trace:

Dhe nëse na nevojitet ky vlerë në BP, mund ta marrim kështu: callresponse.Variables.GetAt("corrmat").
Transferta e të dhënave
Më pas do të flasim për transmetimin e të dhënave nga InterSystems IRIS në Python, të gjitha kërkesat për transmetimin e të dhënave implementojnë ndërfaqen isc.py.msg.DataRequest, e cila ofron këto prona:
Variableâ variabla Python nĂ« tĂ« cilĂ«n shkruhen tĂ« dhĂ«nat.Tipiâ lloji i variablĂ«s:dataframe(dataframe pandas) oselistĂ«.Namespaceâ zona nga e cila marrim tĂ« dhĂ«nat. Paketaisc.pyduhet tĂ« jetĂ« e disponueshme nĂ« kĂ«tĂ« zonĂ«. Mund tĂ« jetĂ« njĂ« zonĂ« pa mbĂ«shtetje produktesh.
Në bazë të kësaj ndërfaqe janë implementuar 4 klasat e kërkesave:
isc.py.msg.QueryRequestâ vendosni pronĂ«nQuerypĂ«r tĂ« transmetuar kĂ«rkesĂ«n SQL.isc.py.msg.ClassRequestâ vendosni pronĂ«nKlasapĂ«r tĂ« transmetuar tĂ« dhĂ«nat e klasĂ«s.isc.py.msg.TableRequestâ vendosni pronĂ«nTabelĂ«pĂ«r tĂ« transmetuar tĂ« dhĂ«nat e tabelĂ«s.isc.py.msg.GlobalRequestâ vendosni pronĂ«nGlobalpĂ«r tĂ« transmetuar tĂ« dhĂ«nat globale.
Në procesin e testimit, shikoni aktiviteten RAW, ku isc.py.msg.QueryRequest të treguar në veprim.

Ruajtja/riparimi i kontekstit të Python
Së fundi, mund të ruajmë kontekstin Python në InterSystems IRIS, për ta bërë këtë, do të dërgojmë isc.py.msg.SaveRequest me argumentet:
Maskâ Ruhen vetĂ«m variablat qĂ« pĂ«rmbushin maskĂ«n. MbĂ«shteten*dhe?. Shembull:"Data*, Figure?". Nga e drejta*.MaxLengthâ GjatĂ«sia maksimale e variablit tĂ« ruajtur. NĂ«se serializimi i variablit Ă«shtĂ« mĂ« i gjatĂ«, atĂ«herĂ« do tĂ« injorohet. Caktoni 0 pĂ«r tĂ« marrĂ« variablat e çdo gjatĂ«sie. Nga e drejta$$$MaxStringLength.Emriâ Emri i kontekstit (opsional).PĂ«rshkrimiâ PĂ«rshkrimi i kontekstit (opsional).
Kthehet Ens.StringResponse me Id i kontekstit të ruajtur. Në procesin e testimit, shikoni aktiviteten Ruaj Kontekstin.
Kërkesa përkatëse isc.py.msg.RestoreRequest ngarkon kontekstin nga InterSystems IRIS në Python:
ContextIdâ identifikuesi i kontekstit.Pastroniâ pastroni kontekstin para rivendosjes.
Jupyter Notebook
â Ă«shtĂ« njĂ« aplikacion nĂ« internet me burim tĂ« hapur, qĂ« lejon krijimin e notebook-eve qĂ« pĂ«rmbajnĂ« kod, vizualizime dhe tekst dhe publikimin e tyre. Python Gateway lejon tĂ« shikoni dhe editoj deri nĂ« proceset BPL nĂ« formĂ«n e Jupyter Notebook. Mbani nĂ« mend se nĂ« kĂ«tĂ« moment pĂ«rdoret executor i zakonshĂ«m Python 3.
Kyçja e këtij zgjerimi parashikon që anotimet përmbajnë kodin Python dhe përdorin emrat e aktiviteteve si tituj paraprakë. Tani është e mundur të zhvillohen proceset e biznesit PythonGateway në Jupyter Notebook. Këto janë mundësitë e ofruara:
- Krijoni procese të reja të biznesit
- Fshini proceset e biznesit
- Krijoni aktivitete të reja
- Modifikoni aktivitetet
- Fshini aktivitetet
Këtu është . Disa skrinshot:
Eksploruesi i proceseve

Redaktori i procesit

Instalimi
- Ju nevojitet InterSystems IRIS 2019.2+.
- Instaloni PythonGateway v0.8+ (nevojitet vetëm
isc.py.util.Jupyter,isc.py.util.JupyterCheckpointsdheisc.py.ens.ProcessUtils). - Përditësoni kodin ObjectScript nga repository.
- Ekzekutoni
do ##class(isc.py.util.Jupyter).Install()dhe ndiqni udhëzimet.
.
Përfundimet
MLToolkit â njĂ« grup mjetesh qĂ« ka qĂ«llim tĂ« bashkojĂ« modelet dhe mjedisin e transaksioneve, nĂ« mĂ«nyrĂ« qĂ« modelet e ndĂ«rtuara tĂ« jenĂ« tĂ« lehta pĂ«r t'u pĂ«rdorur direkt nĂ« proceset e biznesit tuaj. Python Gateway Ă«shtĂ« njĂ« pjesĂ« e MLToolkit dhe ofron integrim me gjuhĂ«n Python duke lejuar orkestrimin e çdo algoritmi tĂ« mĂ«simit tĂ« makinerisĂ«, tĂ« krijuar nĂ« gjuhĂ«n Python (mjedisi kryesor pĂ«r shumĂ« ShkencĂ«tarĂ« tĂ« tĂ« DhĂ«nave), duke pĂ«rdorur biblioteka tĂ« shumta tĂ« gatshme pĂ«r krijimin e shpejtĂ« tĂ« zgjidhjeve analitike adaptuese dhe robotike AI/ML nĂ« platformĂ«n InterSystems IRIS.
Linke
MLToolkit
Grupi i përdoruesve MLToolkit është një depo private GitHub, e krijuar si pjesë e organizatës korporative GitHub të InterSystems. Ajo është e destinuar për përdoruesit e jashtëm që instalojnë, studiojnë ose përdorin tashmë komponentët e MLToolkit, duke përfshirë Python Gateway. Grupi ofron një sërë rastesh të zbatuara (me kod burimor dhe të dhëna testuese) në fushat e marketingut, prodhimit, mjekësisë dhe shumë sektorëve të tjerë. Për t'u bashkuar me grupin e përdoruesve të ML Toolkit, ju lutemi dërgoni një mesazh të shkurtër me email në adresën e mëposhtme: dhe tregoni në emailin tuaj të dhënat e mëposhtme:
- Emri i përdoruesit GitHub
- Organizata (ku punoni ose studioni)
- Pozita (pozita juaj aktuale në organizatën tuaj, ose "Student", ose "Pavarur").
- Vendi
Për ata që lexuan artikullin dhe kanë interes për mundësitë e InterSystems IRIS si një platformë për zhvillimin ose hostimin e mekanizmave të inteligjencës artificiale dhe mësimit të makinerive, ne ofrojmë të diskutojmë skenarët e mundshëm që janë të rëndësishëm për ndërmarrjen tuaj. Ne jemi të gatshëm të analizojmë nevojat e ndërmarrjes suaj dhe së bashku të përcaktojmë një plan veprimi; adresa jonë e kontaktit për grupin tonë ekspertësh AI/ML është .
Burimi: habr.com
