Python Gateway në InterSystems IRIS

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

  1. Hyrje.
  2. Vegël.
  3. Instalimi.
  4. API.
  5. Interoperabiliteti.
  6. Jupyter Notebook.
  7. Përfundime.
  8. Referencat.
  9. 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 dokumentacion.
  • PĂ«r ushtrimet tona tĂ« ardhshme, instaloni Python 3.6.7 64 bit.
  • IDE: UnĂ« pĂ«rdor PyCharm, por pĂ«rgjithĂ«sisht ka shumĂ«. 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Ă« Jupyter.

Bibliotekat

Ja një listë (e paplotë) e bibliotekave për mësim në makinë:

  • Numpy — paketi themelor pĂ«r llogaritjet e sakta.
  • Pandas — struktura tĂ« dhĂ«nash me performancĂ« tĂ« lartĂ« dhe instrumente pĂ«r analizĂ«n e tĂ« dhĂ«nave.
  • Matplotlib — krijimi i grafikĂ«ve.
  • Seaborn — vizualizimi i tĂ« dhĂ«nave, i bazuar nĂ« matplotlib.
  • Sklearn — metoda tĂ« mĂ«simit tĂ« makinave.
  • XGBoost — algoritme tĂ« mĂ«simit tĂ« makinave nĂ« kuadĂ«r tĂ« metodologjisĂ« sĂ« pĂ«rmirĂ«simit tĂ« gradienit (Gradient Boosting).
  • Gensim — NLP.
  • Keras — rrjetet neuronale.
  • Tensorflow — njĂ« platformĂ« pĂ«r ndĂ«rtimin e modeleve tĂ« mĂ«simit tĂ« makinave.
  • PyTorch — njĂ« platformĂ« pĂ«r ndĂ«rtimin e modeleve tĂ« mĂ«simit tĂ« makinave, e orientuar nĂ« Python.
  • Nyoka — 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ë faqja e lëshimeve. 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ë:

  1. Instaloni Python 3.6.7 64 bit. Rekomandohet të instaloni Python në direktorinë e paracaktuar.
  2. Instaloni modul dill: pip install dill.
  3. 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).
  4. Vendosni callout DLL/SO/DYLIB në dosjen bin e instancës suaj InterSystems IRIS. Skedari i bibliotekës duhet të jetë i disponueshëm në rrugën që kthen write ##class(isc.py.Callout).GetLib().

Windows

  1. Sigurohuni që variabla e ambientit PYTHONHOME tregon Python 3.6.7.
  2. Sigurohuni që variabla sistemike e ambientit PATH përmban variablën PYTHONHOME (ose direktorinë që ajo tregon).

Linux (Debian/Ubuntu)

  1. Kontrolloni që variabla e ambientit PATH përmban /usr/lib dhe /usr/lib/x86_64-linux-gnu. Përdorni skedarin /etc/environment për të vendosur variablat e ambientit.
  2. Në rast gabimesh simbol i paemëruar: _Py_TrueStruct vendosni cilësimin PythonLib. Po ashtu, në Readme ka një seksion për Troubleshooting.

Mac

  1. Aktualisht mbështetet vetëm Python 3.6.7 nga Python.org. 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ë seri artikujsh 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.key

Në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.Process ruan 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Ă«simin WorkingDir duke 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 var

Si duhet tĂ« shfaqet HELLO — vlera e variablĂ«s Python x. NĂ«se statusi i kthyer sc Ă«shtĂ« njĂ« gabim ose var Ă«shtĂ« bosh, kontrolloni Readme — Seksioni pĂ«r Zgjidhjen e Problemeve.

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Ă« serializoni returnVariable. 0 — string (me tĂ« drejtat e paracaktuar), 1 — repr.
  • result — ReferencĂ« ByRef nĂ« variablĂ«n ku ruhet vlera returnVariable.

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 ekzekutimit kode nĂ« 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:

  • String pĂ«r tipe tĂ« thjeshta tĂ« tĂ« dhĂ«nave dhe pĂ«r debuggim.
  • Repr pĂ«r ruajtjen e objekteve tĂ« thjeshta dhe pĂ«r debuggim.
  • JSON pĂ«r manipulimin e lehtĂ« tĂ« tĂ« dhĂ«nave nĂ« anĂ«n e InterSystems IRIS.
  • Pickle pĂ«r ruajtjen e objekteve.

Këto metoda lejojnë marrjen e variablave nga Python si stringa ose rrjedha.

  • GetVariable(variable, serialization, .stream, useString) — merr serialization variabĂ«l variabĂ«l nĂ« stream. NĂ«se useString nĂ«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
>6

InterSystems IRIS -> Python

Duke ngarkuar të dhënat nga InterSystems IRIS në Python.

  • ExecuteQuery(query, variable, type, namespace) — krijon njĂ« set tĂ« dhĂ«nash (pandas dataframe ose listĂ«) nga kĂ«rkesa sql dhe e vendos atĂ« nĂ« njĂ« ndryshore Python variabĂ«l. Paketa isc.py duhet 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 global global nga subscript start deri te end nĂ« Python si njĂ« ndryshore e tipit type: listĂ«, ose pandas dataframe. PĂ«rshkrimi i argumenteve opsionale mask and etiketat Ă«shtĂ« nĂ« dispozicion nĂ« dokumentacionin e klasĂ«s dhe nĂ« repozitorin Dokumentet e Transferimit tĂ« TĂ« DhĂ«nave.
  • ExecuteClass(class, variable, type, start, end, properties, namespace) — ngarkon tĂ« dhĂ«nat nga klasa class nga id start deri te end nĂ« Python si njĂ« ndryshore e tipit type: listĂ«, ose pandas dataframe. 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 %%CLASSNAME injorohet.
  • ExecuteTable(table, variable, type, start, end, properties, namespace) — ngarkon tĂ« dhĂ«nat nga tabela tavolina nga id start deri te end nĂ« 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Ă« Dokumentet e Transferimit tĂ« TĂ« DhĂ«nave.
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 Pandas dataframe.
  • 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 Pandas dataframe.
  • 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Ă«s
  • variabĂ«l — emri i variablit Python nĂ« tĂ« cilin janĂ« shkruar tĂ« dhĂ«nat.
  • type — listĂ« ose Pandas dataframe.
  • start — Id fillestar.
  • end — Id pĂ«rfundimtar
  • 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 %%CLASSNAME injorohet.
  • 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, ExecuteClass dhe ExecuteTable punojnĂ« po aq shpejt.
  • ExecuteGlobal 20 herĂ« mĂ« shpejt se ExecuteQuery nĂ« grupe tĂ« mĂ«dha tĂ« dhĂ«nash (koha e kalimit mĂ« e madhe se >0.01 sekonda).
  • ExecuteGlobal, ExecuteClass dhe ExecuteTable punojnĂ« nĂ« globalet me kĂ«tĂ« strukturĂ«: ^global(key) = $lb(prop1, prop2, ..., propN) ku key — numĂ«r i plotĂ«.
  • PĂ«r ExecuteGlobal, ExecuteClass dhe ExecuteTable rezultati i mbĂ«shtetur %Date pĂ«rputhet me mktime dhe varet nga OS (windows: 1970-01-01, linux 1900-01-01, mac). 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, ExecuteClass dhe ExecuteTable tĂ« gjitha argumentet pĂ«rveç burimit tĂ« tĂ« dhĂ«nave (globalit, klasĂ«s ose tabelĂ«s) dhe variablit janĂ« opsionale.

Shembuj

Klasa testuese isc.py.test.Person 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.ExecutionRequest pĂ«r ekzekutimin e kodit Python. Kthehet isc.py.msg.ExecutionResponse me rezultatin e ekzekutimit dhe vlerat e variablave tĂ« kĂ«rkuara.
  • isc.py.msg.StreamExecutionRequest pĂ«r ekzekutimin e kodit Python. Kthehet isc.py.msg.StreamExecutionResponse me rezultatin e ekzekutimit dhe vlerat e variablave tĂ« kĂ«rkuara. Analog isc.py.msg.ExecutionRequest, por merr dhe kthen rrjedha nĂ« vend tĂ« vargjeve.
  • isc.py.msg.QueryRequest pĂ«r dĂ«rgimin e rezultatit tĂ« ekzekutimit tĂ« kĂ«rkesĂ«s SQL. Kthehet Ens.Response.
  • isc.py.msg.GlobalRequest/isc.py.msg.ClassRequest/isc.py.msg.TableRequest pĂ«r transferimin e tĂ« dhĂ«nave tĂ« globit/klasĂ«s/tabelĂ«s. Kthen Ens.Response.
  • isc.py.msg.SaveRequest pĂ«r ruajtjen e kontekstit Python. Kthen Ens.StringResponse me identifikuesin e kontekstit.
  • isc.py.msg.RestoreRequest pĂ«r rikthimin e kontekstit Python.

    Për më tepër, isc.py.ens.Operation ka dy konfigurime:

    • Initializer — zgjedhja e klasĂ«s qĂ« implementon ndĂ«rfaqen isc.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.so ose 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.ProcessUtils lejon tĂ« nxjerrĂ«sh annotimet nga aktivitete me zĂ«vendĂ«simin e variablave.
  • isc.py.util.BPEmulator lejon 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Ă« objektit process, qĂ« Ă«shtĂ« njĂ« instancĂ« e klasĂ«s isc.py.test.Process p.sh. procesi aktual i biznesit.
  • ${%PopulateUtils:Integer:1:100} thirr njĂ« metodĂ« Integer klasĂ«s %PopulateUtils, duke kaluar argumentet 1 dhe 100, duke kthyer njĂ« numĂ«r tĂ« rastit tĂ« plotĂ« nĂ« intervalin 1...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:

  1. Ekzekutoni në terminalin e OS: pip install pandas matplotlib seaborn.
  2. Ekzekutoni në terminalin e InterSystems IRIS: do ##class(isc.py.test.CannibalizationData).Import() për të mbushur të dhënat e testit.
  3. Ekzekutoni produktin isc.py.test.Production.
  4. Dërgoni një kërkesë të tipit Ens.Request në isc.py.test.Process.

Le të shohim si funksionon gjithçka së bashku. Hapni isc.py.test.Process në redaktorin BPL:

Python Gateway në InterSystems IRIS

Ekzekutimi i kodit

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

Python Gateway në InterSystems IRIS

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Ă«rpunimin def dhe shprehje tĂ« ngjashme me shumĂ« rreshta. NĂ« mĂ«nyrĂ« tĂ« paracaktuar 0.
  • 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, Pickle dhe Dill, nĂ« mĂ«nyrĂ« tĂ« paracaktuar Str.

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:

Python Gateway në InterSystems IRIS

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:

Python Gateway në InterSystems IRIS

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) ose listĂ«.
  • Namespace — zona nga e cila marrim tĂ« dhĂ«nat. Paketa isc.py duhet 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Ă«n Query pĂ«r tĂ« transmetuar kĂ«rkesĂ«n SQL.
  • isc.py.msg.ClassRequest — vendosni pronĂ«n Klasa pĂ«r tĂ« transmetuar tĂ« dhĂ«nat e klasĂ«s.
  • isc.py.msg.TableRequest — vendosni pronĂ«n TabelĂ« pĂ«r tĂ« transmetuar tĂ« dhĂ«nat e tabelĂ«s.
  • isc.py.msg.GlobalRequest — vendosni pronĂ«n Global pĂ«r tĂ« transmetuar tĂ« dhĂ«nat globale.

Në procesin e testimit, shikoni aktiviteten RAW, ku isc.py.msg.QueryRequest të treguar në veprim.

Python Gateway në InterSystems IRIS

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

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ë video demo. Disa skrinshot:

Eksploruesi i proceseve

Python Gateway në InterSystems IRIS

Redaktori i procesit

Python Gateway në InterSystems IRIS

Instalimi

  1. Ju nevojitet InterSystems IRIS 2019.2+.
  2. Instaloni PythonGateway v0.8+ (nevojitet vetëm isc.py.util.Jupyter, isc.py.util.JupyterCheckpoints dhe isc.py.ens.ProcessUtils).
  3. Përditësoni kodin ObjectScript nga repository.
  4. Ekzekutoni do ##class(isc.py.util.Jupyter).Install() dhe ndiqni udhëzimet.

Dokumentacioni.

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: MLToolkit@intersystems.com 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ë MLToolkit@intersystems.com.

Burimi: habr.com

Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« đŸ”„ Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« | ProHoster