Python Gateway në InterSystems IRIS

Ky kjo artikull i kushtohet 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 tĂ« makinerisĂ«, i krijuar nĂ« gjuhĂ«n Python (mjedisi kryesor pĂ«r shumĂ« ShkencĂ«tarĂ« tĂ« TĂ« DhĂ«nave), duke pĂ«rdorur bibliotekat e shumta tĂ« gatshme pĂ«r tĂ« ndihmuar nĂ« krijimin e zgjidhjeve adaptuese, robotizuese analitike AI/ML nĂ« platformĂ«n InterSystems IRIS. NĂ« kĂ«tĂ« artikull, do tĂ« tregoj se si InterSystems IRIS mund tĂ« orkestrojĂ« proceset nĂ« gjuhĂ«n Python, tĂ« realizojĂ« me efektivitet transferimin dyanshĂ«m tĂ« tĂ« dhĂ«nave dhe tĂ« krijojĂ« procese inteligjente biznesi.

Plani

  1. Hyrje.
  2. Mjetet.
  3. Instalimi.
  4. API.
  5. Ndëroperabiliteti.
  6. Jupyter Notebook.
  7. Përfundime.
  8. Lidhjet.
  9. MLToolkit.

Hyrje

Python është një gjuhë programimi në nivel të lartë, për qëllime të përgjithshme, e orientuar drejt rritjes së produktivitetit të zhvilluesit dhe lexueshmërisë së kodit. Në këtë seri artikujsh, do të flas për mundësitë e përdorimit të gjuhës Python në platformën InterSystems IRIS, duke qenë se fokusi kryesor i këtij artikulli është aplikimi i Python si gjuhë për krijimin dhe përdorimin e modeleve të mësimit të makinerisë.

Mësimi i makinerisë (ML) është një klasë metodash të inteligjencës artificiale, me karakteristikën e të cilës është jo zgjidhja e drejtpërdrejtë e problemit, por mësimi gjatë zgjidhjes së shumë problemeve të ngjashme.

Algoritmet dhe modelet e mësimit të makinerisë po bëhen gjithnjë e më të zakonshme. Ka shumë arsye për këtë, por gjithçka reduktohet në aksesueshmërinë, thjeshtësinë dhe arritjen e rezultateve praktike. A është klasterizimi ose madje modelimi me rrjete nervore një teknologji e re?

Sigurisht që jo, por tani nuk ka nevojë të shkruhen qindra mijëra rreshta kodi për të lançuar një model, dhe shpenzimet për krijimin dhe përdorimin e modeleve po bëhen gjithnjë e më të vogla.

Mjetet po evoluojnĂ« — ndonĂ«se nuk kemi mjete tĂ« plota tĂ« orientuara nga GUI pĂ«r AI/ML, progresi qĂ« kemi parĂ« me shumĂ« klasa tĂ« tjera tĂ« sistemeve informative, pĂ«r shembull, BI (nga shkrimi i kodit deri te pĂ«rdorimi i kornizave dhe zgjidhjeve me konfigurim tĂ« orientuar nga GUI), po ndiqet gjithashtu nĂ« mjetet pĂ«r krijimin e AI/ML. Ne tashmĂ« kemi kaluar fazĂ«n e shkruarjes sĂ« kodit dhe sot pĂ«rdorim korniza pĂ«r ndĂ«rtimin dhe trajnimin e modeleve.

Përmirësime të tjera, siç është mundësia për të shpërndarë një model të paratrainuar, kur përdoruesi përfundimtar duhet thjesht të përfundojë trajnimin e modelit me të dhënat e tij specifike, gjithashtu lehtësojnë fillimin e përdorimit të mësimit të makinerisë. Këto arritje e bëjnë shumë më të lehtë studimin e mësimit të makinerisë si për specialistët, ashtu edhe për kompanitë në tërë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, të gjitha këto informacione mund të përgatiten menjëherë dhe të përdoren si të dhëna fillestare 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ë konsumohemi vetëm për burimet që na nevojiten. Më tepër, falë paralelizimit që ofrojnë platformat cloud, ne mund të kursejmë kohën e shpenzuar.

Por çfarĂ« ndodh me rezultatet? KĂ«tu gjithçka bĂ«het mĂ« e komplikuar. EkzistojnĂ« shumĂ« mjete pĂ«r ndĂ«rtimin e modeleve, pĂ«r tĂ« cilat do tĂ« flas mĂ« poshtĂ«. NdĂ«rtimi i njĂ« modeli tĂ« mirĂ« nuk Ă«shtĂ« e lehtĂ«, por çfarĂ« vjen mĂ« pas? TĂ« nxjerrim fitime nga pĂ«rdorimi i modelit nga biznesi gjithashtu Ă«shtĂ« njĂ« detyrĂ« e thjeshtĂ«. RrĂ«njĂ«t e problemit qĂ«ndrojnĂ« nĂ« ndarjen e ngarkesave analitike dhe transaksionale, dhe modeleve tĂ« tĂ« dhĂ«nave. Kur e stĂ«rvitim njĂ« model, ne 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Ă« dobi ka modeli mĂ« i mirĂ« pĂ«r zbulimin e transaksioneve mashtruese, nĂ«se e aktivizojmĂ« atĂ« njĂ« herĂ« nĂ« ditĂ«? Mashtruesit janĂ« larguar me paratĂ«. Na nevojitet tĂ« trajnojmĂ« modelin me tĂ« dhĂ«na historike, por gjithashtu duhet ta aplikojmĂ« nĂ« kohĂ« reale me tĂ« dhĂ«na tĂ« reja qĂ« vijnĂ«, nĂ« mĂ«nyrĂ« qĂ« proceset tona biznesi tĂ« mund tĂ« veprojnĂ« nĂ« pĂ«rputhje me parashikimet e bĂ«ra nga modeli.

ML Toolkit është një paketë mjetesh, që ka si qëllim pikërisht këtë: të bashkojë modelet dhe mjedisin transaksional, në mënyrë që modelet e ndërtuara të mund të përdoren lehtësisht direkt në proceset tuaja biznesore. Python Gateway është një pjesë e ML Toolkit dhe siguron integrimin me gjuhën Python (ashtu si R Gateway, që është pjesë e ML Toolkit, siguron integrimin me gjuhën R).

Mjetet

Para se vazhdojmë, do doja të përshkruaja disa mjete dhe biblioteka për Python që do të përdorim më vonë.

Teknologjitë

  • Python Ă«shtĂ« njĂ« gjuhĂ« programimi interpretative, me nivel tĂ« lartĂ«, e cila shĂ«rben pĂ«r qĂ«llime tĂ« pĂ«rgjithshme. Avantazhi kryesor i gjuhĂ«s Ă«shtĂ« biblioteka e gjerĂ« pĂ«r llogaritje matematikore, ML dhe AI. Ashtu si ObjectScript, kjo Ă«shtĂ« njĂ« gjuhĂ« orientuar nĂ« objekte, por gjithçka pĂ«rcaktohet nĂ« mĂ«nyrĂ« dinamike dhe jo statike. Gjithashtu, gjithçka Ă«shtĂ« njĂ« objekt. Artikujt e mĂ«vonshĂ«m supozojnĂ« njĂ« njohuri tĂ« kalimtare me gjuhĂ«n. NĂ«se dĂ«shironi tĂ« filloni mĂ«simin, ju rekomandoj tĂ« filloni me dokumentacionin.
  • PĂ«r ushtrimet tona tĂ« ardhshme, instaloni Python 3.6.7 64 bit.
  • IDE: UnĂ« pĂ«rdor PyCharm, por nĂ« pĂ«rgjithĂ«si ka disa tĂ« tjera 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, mund tĂ« shkruani dhe ndani skenaret tuaj nĂ« notebook-e online. NjĂ« nga mĂ« popullorĂ«t Ă«shtĂ« Jupyter.

Bibliotekat

Ja një listë (jo të plotë) e biblioteka për mësimin e makinerive:

  • Numpy — paketa themelore pĂ«r llogaritjet numerike.
  • Pandas — struktura tĂ« dhĂ«nash me performancĂ« tĂ« lartĂ« dhe mjete pĂ«r analizĂ«n e tĂ« dhĂ«nave.
  • Matplotlib — krijimi i grafike.
  • Seaborn — vizualizimi i tĂ« dhĂ«nave, i bazuar nĂ« matplotlib.
  • Sklearn — metoda tĂ« mĂ«simit tĂ« makinerive.
  • XGBoost — algoritme tĂ« mĂ«simit tĂ« makinerive sipas metodologjisĂ« sĂ« pĂ«rmirĂ«simit tĂ« gradĂ«s (Gradient Boosting).
  • Gensim — NLP.
  • Keras — rrjetet nervore.
  • Tensorflow — njĂ« platformĂ« pĂ«r ndĂ«rtimin e modeleve tĂ« mĂ«simit tĂ« makinerive.
  • PyTorch — njĂ« platformĂ« pĂ«r ndĂ«rtimin e modeleve tĂ« mĂ«simit tĂ« makinerive, qĂ« Ă«shtĂ« e orientuar drejt Python.
  • Nyoka — PMML nga modele tĂ« ndryshme.

Teknologjitë AI/ML lejojnë që biznesi të jetë më efikas dhe adaptiv. Për më tepër, sot këto teknologji po bëhen më të lehta për t'u zhvilluar dhe implementuar. Filloni të studioni teknologjitë AI/ML dhe se si ato mund t'ju ndihmojnë të rriteni.

Instalimi

Ka disa mënyra për të instaluar dhe përdorur Python Gateway:

  • OS
    • Windows
    • Linux
    • Mac
  • Docker
    • PĂ«rdorni njĂ« imazh nga DockerHub
    • Krijoni imazhin tuaj

Pavarësisht nga mënyra e instalimit, do t'ju nevojitet kodi burimor. Vendi i vetëm për të shkarkuar kodin është pagina e lëshimeve. Ajo përmban lëshime stabile të testuara, thjesht merrni atë më të fundit. Aktualisht, ajo është 0.8, por me kalimin e kohës do të ketë edhe të reja. Mos e kloni/ngarko repo-in, shkarkoni lëshimin më të fundit.

OS

Nëse po instaloni Python Gateway në sistemin operativ, së pari (pavarësisht nga sistemi operativ) ju nevojitet të instaloni Python. Për këtë:

  1. Instaloni Python 3.6.7 64 bit. Rekomandohet që të instaloni Python në direktorinë e paracaktuar.
  2. Instaloni modul dill: pip install dill.
  3. Shkarko kodin ObjectScript (pra, do $system.OBJ.ImportDir("C:InterSystemsReposPythoniscpy", "*.cls", "c",,1)) në çdo zonë me produkte. Nëse dëshironi që një zonë ekzistuese të mbështesë produkte, kryeni: write ##class(%EnsembleMgr).EnableNamespace($Namespace, 1).
  4. Vendosni callout DLL/SO/DYLIB në folderin bin të instancës suaj InterSystems IRIS. Skedari i bibliotekës duhet të jetë i aksesueshëm në rrugën e kthyer write ##class(isc.py.Callout).GetLib().

Windows

  1. Sigurohuni që variabli i mjedisit PYTHONHOME tregon për Python 3.6.7.
  2. Sigurohuni që variabli sistemor i mjedisit për përmban variablën PYTHONHOME (ose direktorinë në të cilën tregon ajo).

Linux (Debian/Ubuntu)

  1. Kontrolloni që variabli i mjedisit për përmban /usr/lib dhe /usr/lib/x86_64-linux-gnu. Përdorni skedarin /etc/environment për të vendosur variablat e mjedisit.
  2. Në rast gabimesh undefined symbol: _Py_TrueStruct vendosni konfigurimin PythonLib. Gjithashtu në Readme ka një seksion për Troubleshooting.

Mac

  1. Aktualisht mbështetet vetëm Python 3.6.7 nga Python.org. Kontroloni variablën për.

Nëse keni ndryshuar variablat e mjedisit, rinisni produktin tuaj InterSystems.

Docker

Përdorimi i kontejnerëve ka disa përparësi:

  • Portabiliteti
  • Efikasitet
  • Izolimi
  • LehtĂ«sia
  • Imutabiliteti

Shikoni këtë serinë e artikujve për më shumë informacion lidhur me përdorimin e Docker me produktet InterSystems.

Të gjitha ndërtimet e Python Gateway deri tani janë bazuar në kontejnerë 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 përfundon.

Krijoni imazhin tuaj

Për të ndërtuar imazhin docker, ekzekutoni në rrënjën e repository-t: docker build --force-rm --tag intersystemscommunity/irispy:latest ..
Sipas parazgjedhjes, imazhi ndBuildhet mbi imazhin store/intersystems/iris-community:2019.4.0.383.0, megjithatë ju mund ta ndryshoni këtë, duke vendosur variablën 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`.

Pasi të ketë përfunduar, 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, mund të mosSpecifikoni çelësin.

Komentet

  • Procesi i testit isc.py.test.Process ruan njĂ« sĂ«rĂ« imazhesh nĂ« njĂ« katalog tĂ« pĂ«rkohshĂ«m. Ndoshta dĂ«shironi tĂ« ndryshoni kĂ«tĂ« rrugĂ« nĂ« njĂ« katalog tĂ« montuar. PĂ«r ta bĂ«rĂ« kĂ«tĂ«, redaktoni konfigurimin WorkingDir duke specifikuar direktorinĂ« e montuar.
  • PĂ«r akses nĂ« terminal realizoni: docker exec -it irispy sh.
  • Aksesi nĂ« Portalin e Menaxhimit tĂ« Sistemit me identifikues SuperUser/SYS.
  • PĂ«r tĂ« ndaluar kontejnerin, realizoni: docker stop irispy && docker rm --force irispy.

Kontrolli i instalimit

Pas instalimit të Python Gateway, është mirë të kontrolloni që funksionon. Ekzekutoni këtë kod në terminalin InterSystems IRIS:

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

Si rezultat, duhet tĂ« shfaqet HELLO — vlera e variablit Python x. NĂ«se statusi i kthyer sc Ă«shtĂ« njĂ« gabim ose var i zbrazĂ«t, kontrolloni Readme — Seksioni i Rregullimeve.

API

Python Gateway Ă«shtĂ« instaluar, dhe ju e keni siguruar qĂ« funksionon. ËshtĂ« koha ta filloni atĂ«!
Interface kryesore për Python është isc.py.Main. Ai ofron grupet e mëposhtme të metodave (të gjitha kthejnë %Status):

  • Ekzekutimi i kodit
  • Transmetimi i tĂ« dhĂ«nave
  • Auxiliary

Ekzekutimi i kodit

Këto metoda lejojnë ekzekutimin e kodit të rastësishëm Python.

SimpleString

SimpleString — Ă«shtĂ« metoda kryesore. Ajo merr 4 argumente opsionale:

  • code — njĂ« varg kodi pĂ«r tĂ« ekzekutuar. Simboli i kalimit tĂ« linjĂ«s: $c(10).
  • returnVariable — emri i variablit pĂ«r kthim.
  • serialization — si tĂ« serializoni returnVariable. 0 — string (me defaut), 1 — repr.
  • rezultati — ByRef referenca nĂ« variablĂ«n nĂ« tĂ« cilĂ«n shkruhet vlera returnVariable.

Më sipër ne ekzekutuam:

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

Në këtë shembull ne i japim një vlerë variablit Python x vlerën Përshëndetje dhe duam të kthejmë vlerën e variablit Python x në një variabël ObjectScript var.

ExecuteCode

ExecuteCode është një alternativë më e sigurt dhe më pak e kufizuar SimpleString.
Vargjet në platformën InterSystems IRIS janë të kufizuara në 3 641 144 karaktere, dhe nëse dëshiron të ekzekutosh një copë më të gjatë kodi, duhet të përdorësh rrjedhat.
Pranohen dy argumente:

  • code — njĂ« varg ose rrjedhĂ« kodi Python pĂ«r ekzekutim.
  • variable — (opsionale) cakton rezultatin e ekzekutimit code kĂ«tij variabli Python.

Për shembull:

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

Në këtë shembull ne shumzojmë 2 me 3 dhe e regjistrojmë rezultatin në një variabël Python y.

Transmetimi i të dhënave

Dërgoni të dhënat në Python dhe prapa.

Python -> InterSystems IRIS

Ka 4 mënyra për të marrë vlerën e variablit Python në InterSystems IRIS, në varësi të serializimit që ju nevojitet:

  • String pĂ«r tipe tĂ« dhĂ«nash tĂ« thjeshta dhe debug.
  • Repr pĂ«r ruajtjen e objekteve tĂ« thjeshta dhe pĂ«r debug.
  • 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 një string ose si rrjedha.

  • GetVariable(variable, serialization, .stream, useString) — merr serialization variabĂ«l variable nĂ« NĂ« modul stream Ă«shtĂ« shtuar direktiva '. NĂ«se useString nĂ«se Ă«shtĂ« 1 dhe serializimi vendoset nĂ« string, atĂ«herĂ« kthehet string dhe jo 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 variablën tonë y.

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

InterSystems IRIS -> Python

Po ngarkojmë të dhëna nga InterSystems IRIS në Python.

  • ExecuteQuery(query, variable, type, namespace) — krijon njĂ« grup tĂ« dhĂ«nash (pandas dataframe ose list) nga njĂ« kĂ«rkesĂ« SQL dhe e vendos atĂ« nĂ« njĂ« variabĂ«l Python. variable. Paketa isc.py duhet tĂ« jetĂ« e disponueshme nĂ« hapĂ«sirĂ« namespace — aty do tĂ« ekzekutohet kĂ«rkesa.
  • ExecuteGlobal(global, variable, type, start, end, mask, labels, namespace) — ngarkon tĂ« dhĂ«nat e globalit global nga subskipta start nĂ« end nĂ« Python si njĂ« variabĂ«l tĂ« tipit lloji: list, ose pandas. dataframePĂ«rshkrimi i argumenteve opsionale mask dhe labels Ă«shtĂ« e disponueshme nĂ« dokumentimin e klasĂ«s dhe nĂ« depo Dokumentet e Transferimit tĂ« tĂ« DhĂ«nave.
  • ExecuteClass(class, variable, type, start, end, properties, namespace) — ngarkon tĂ« dhĂ«nat e klasĂ«s class nga id start nĂ« end nĂ« Python si njĂ« variabĂ«l tĂ« tipit lloji: list, ose pandas. dataframe. properties — lista (ndashkimi Ă«shtĂ« presja) e pronave tĂ« klasĂ«s qĂ« duhen ngarkuar nĂ« grupin e tĂ« dhĂ«nave. MbĂ«shteten maskat. * dhe ?. Me parametra standardĂ« — * (tĂ« gjitha pronat). Prona %%CLASSNAME neglizhohet.
  • ExecuteTable(table, variable, type, start, end, properties, namespace) — ngarkon tĂ« dhĂ«nat e tabelĂ«s table nga id start nĂ« end nĂ« Python.

ExecuteQuery — Ă«shtĂ« universale (çdo kĂ«rkesĂ« SQL e saktĂ« do tĂ« dĂ«rgohet nĂ« Python). MegjithatĂ«, ExecuteGlobal dhe mbĂ«shtjellĂ«sat e tij ExecuteClass dhe ExecuteTable punojnĂ« me disa kufizime. Ato janĂ« shumĂ« mĂ« tĂ« shpejta (3-5 herĂ« mĂ« tĂ« shpejtĂ« se ODBC-driverv dhe 20 herĂ« mĂ« tĂ« shpejtĂ« ExecuteQuery). Informacione shtesĂ« janĂ« nĂ« Dokumentet e Transferimit tĂ« tĂ« DhĂ«nave.
Të gjitha këto metoda mbështesin kalimin e të dhënave nga çdo hapësirë. Paketa isc.py duhet të jetë e disponueshme në hapësirën e synuar.

ExecuteQuery

ExecuteQuery(request, variable, type, namespace) — kalimi i rezultateve tĂ« çdo kĂ«rkese SQL tĂ« saktĂ« nĂ« Python. Ky Ă«shtĂ« metoda mĂ« e ngadaltĂ« e kalimit tĂ« tĂ« dhĂ«nave. PĂ«rdorni kĂ«tĂ« nĂ«se ExecuteGlobal dhe mbĂ«shtjellĂ«sat e tij nuk janĂ« tĂ« disponueshme.

Argumentet:

  • query — kĂ«rkesa SQL.
  • variable — emri i variablit Python nĂ« tĂ« cilin shkruhen tĂ« dhĂ«nat.
  • lloji — list ose Pandas dataframe.
  • namespace — hapĂ«sira nĂ« tĂ« cilĂ«n do tĂ« ekzekutohet kĂ«rkesa.

ExecuteGlobal

ExecuteGlobal(global, variable, type, start, end, mask, labels, namespace) — kalimi i globalit nĂ« Python.

Argumentet:

  • global — emri i globalit pa ^
  • variable — emri i variablit Python nĂ« tĂ« cilin shkruhen tĂ« dhĂ«nat.
  • lloji — list ose Pandas dataframe.
  • start — subscripti i parĂ« i globalit. Detyrimisht %Integer.
  • end — subscripti i fundit i globalit. Detyrimisht %Integer.
  • mask — maske e vlerave globale. MaskĂ«n mund tĂ« jetĂ« mĂ« e shkurtĂ«r se numri i fushave nĂ« global (nĂ« kĂ«tĂ« rast, fushat nĂ« fund do tĂ« shpĂ«rfillen). Si tĂ« formatohet maska:
    • + kalo vlerĂ«n ashtu siç Ă«shtĂ«.
    • - shpĂ«rfill vlerĂ«n.
    • b — Tipi logjik (0 — False, gjithĂ« tĂ« tjerat — E vĂ«rtetĂ«).
    • d — Data (nga $horolog, nĂ« Windows nga 1970, nĂ« Linux nga 1900).
    • t — Koha ($horolog, sekondat pas mesnatĂ«s).
    • m — Koha e shĂ«njĂ«s (string formati VITI-MUAAJ-DITË ORË:MINUT:SEKOND).
  • labels — %Lista e emrave tĂ« kolonave. Elementi i parĂ« — emri i subskriptit.
  • namespace — hapĂ«sira nĂ« tĂ« cilĂ«n do tĂ« ekzekutohet kĂ«rkesa.

ExecuteClass

Mbushja mbi ExecuteGlobal. Në bazë të përkufizimit të 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
  • variable — emri i variablit Python nĂ« tĂ« cilin shkruhen tĂ« dhĂ«nat.
  • lloji — list ose Pandas dataframe.
  • start — Id fillestar.
  • end — Id pĂ«rfundimtar
  • properties — lista (ndashkimi Ă«shtĂ« presja) e pronave tĂ« klasĂ«s qĂ« duhen ngarkuar nĂ« grupin e tĂ« dhĂ«nave. MbĂ«shteten maskat. * dhe ?. Me parametra standardĂ« — * (tĂ« gjitha pronat). Prona %%CLASSNAME neglizhohet.
  • namespace — hapĂ«sira nĂ« tĂ« cilĂ«n do tĂ« ekzekutohet kĂ«rkesa.

TĂ« gjitha vetitĂ« kalohen ashtu siç janĂ« pĂ«rveç vetive tĂ« tipave te, %Time, %Boolean dhe %TimeStamp — ato konvertohen nĂ« klasat pĂ«rkatĂ«se tĂ« Python.

ExecuteTable

Mbushja mbi ExecuteClass. Transmeton emrin e tabelës në emrin e klasës dhe thërret ExecuteClass. Nënshkrimi:

ExecuteTable(table, variable, type, start, end, properties, namespace) — kalimi i tĂ« dhĂ«nave tĂ« tabelĂ«s nĂ« Python.

Argumentet:

  • table — emri i tabelĂ«s.
    Të gjitha argumentet e tjera kalohen ashtu siç janë në ExecuteClass.

Shënime

  • ExecuteGlobal, ExecuteClass dhe ExecuteTable punojnĂ« po aq shpejt.
  • ExecuteGlobal 20 herĂ« mĂ« shpejt se ExecuteQuery nĂ« grupe tĂ« mĂ«dha tĂ« tĂ« dhĂ«nave (koha e kalimit mĂ« shumĂ« se >0.01 sekondĂ«).
  • ExecuteGlobal, ExecuteClass dhe ExecuteTable punojnĂ« nĂ« globalet me kĂ«tĂ« strukturĂ«: ^global(çelĂ«si) = $lb(prop1, prop2, ..., propN) ku key — numĂ«r i plotĂ«.
  • PĂ«r ExecuteGlobal, ExecuteClass dhe ExecuteTable range e mbĂ«shtetur tĂ« vlerave te pĂ«rputhet me rangun mktime dhe varet nga SO (windows: 1970-01-01, linux 1900-01-01, mac). PĂ«rdorni %TimeStamppĂ«r kalimin e tĂ« dhĂ«nave jashtĂ« kĂ«tij rangu ose pĂ«rdorni pandas dataframe pasi ky Ă«shtĂ« njĂ« kufizim vetĂ«m pĂ«r listĂ«n.
  • PĂ«r ExecuteGlobal, ExecuteClass dhe ExecuteTable tĂ« gjitha argumentet pĂ«rveç burimeve tĂ« tĂ« dhĂ«nave (globalit, klasĂ«s ose tabelĂ«s) dhe variablit janĂ« opsionale.

Shembuj

Klasa testuese isc.py.test.Person ka një metodë që demonstruese 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 zakonshme
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ërgohet global, emrat e fushave përcaktohen manualisht
// globalKey - emri i subskiptit
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 subskiptit
// 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 metodën do ##class(isc.py.test.Person).Test() për të parë si funksionojnë të gjitha metodat e transmetimit të të dhënave.

Metoda ndihmëse

  • GetVariableInfo(variable, serialization, .defined, .type, .length) — merr informacion pĂ«r variablin: nĂ«se Ă«shtĂ« e pĂ«rcaktuar, klasa dhe gjatĂ«si e serializimit.
  • GetVariableDefined(variable, .defined) — a Ă«shtĂ« e pĂ«rcaktuar variabla.
  • GetVariableType(variable, .type) — merr klasĂ«n e variablit.
  • GetStatus() — merr dhe fshin pĂ«rjashtimin e fundit nĂ« anĂ«n e Python.
  • GetModuleInfo(module, .imported, .alias) — merr variablĂ«n e modulit dhe statusin e importit.
  • GetFunctionInfo(function, .defined, .type, .docs, .signature, .arguments) — merr informacion pĂ«r funksionin.

Interoperabiliteti

Keni mësuar si të thirrni Python Gateway nga terminali, tani do të fillojmë ta përdorim atë në prodhim. Baza e ndërveprimit me Python në këtë mënyrë është isc.py.ens.Operation. Ai na lejon të:

  • KryejmĂ« kodin nĂ« Python
  • RuajmĂ«/RipĂ«rimĂ« kontekstin e Python
  • Ngarko dhe merr tĂ« dhĂ«na nga Python

Në parim, operimi në Pyhton është një mbështjellës mbi isc.py.Main. Operacioni isc.py.ens.Operation jep mundësinë e ndërveprimit me procesin e Python nga prodhimet InterSystems IRIS. Mbështetet pesë kërkesa:

  • isc.py.msg.ExecutionRequest pĂ«r tĂ« ekzekutuar kodin nĂ« Python. Kthen isc.py.msg.ExecutionResponse me rezultatin e ekzekutimit dhe vlerat e variablave tĂ« kĂ«rkuara.
  • isc.py.msg.StreamExecutionRequest pĂ«r tĂ« ekzekutuar kodin nĂ« Python. Kthen isc.py.msg.StreamExecutionResponse rezultatin e ekzekutimit dhe vlerat e variablave tĂ« kĂ«rkuara. E ngjashme isc.py.msg.ExecutionRequest, por pranon dhe kthen rrjedha nĂ« vend tĂ« vargjeve.
  • isc.py.msg.QueryRequest pĂ«r tĂ« transmetuar rezultatin e ekzekutimit tĂ« kĂ«rkesĂ«s SQL. Kthen Ens.Response.
  • isc.py.msg.GlobalRequest/isc.py.msg.ClassRequest/isc.py.msg.TableRequest pĂ«r tĂ« transferuar tĂ« dhĂ«nat e globit/klasĂ«s/tabelĂ«s. Kthehet Ens.Response.
  • isc.py.msg.SaveRequest pĂ«r ruajtjen e kontekstit Python. Kthehet 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 pika të vendosjes:

    • Initializer — zgjedhja e klasĂ«s qĂ« implementon ndĂ«rfaqen isc.py.init.Abstract. Ai mund tĂ« pĂ«rdoret pĂ«r tĂ« ngarkuar funksione, module, klasa etj. Ai ekzekutohet njĂ« herĂ« gjatĂ« nisjes sĂ« procesit.
    • PythonLib — (vetĂ«m pĂ«r Linux) nĂ«se shihni gabime gjatĂ« ngarkimit, vendoseni vlerĂ«n e tij nĂ« libpython3.6m.so ose madje nĂ« rrugĂ«n e plotĂ« deri nĂ« bibliotekĂ«n Python.

Krijimi i procesëve biznesorë

Janë në dispozicion dy klasa që lehtësojnë zhvillimin e procesëve biznesorë:

  • isc.py.ens.ProcessUtils lejon nxjerrjen e anotacioneve nga aktivitete me zĂ«vendĂ«sim variablash.
  • isc.py.util.BPEmulator lejon testimin e lehtĂ« tĂ« procesĂ«ve biznesorĂ« me Python. Ai mund tĂ« ekzekutojĂ« procesin biznesor (pjesĂ« nĂ« gjuhĂ«n Python) nĂ« procesin aktual.

Zëvendësimi i variablave

Të gjitha proceset e biznesit të trashëguara nga isc.py.ens.ProcessUtils, mund të përdorin metodën GetAnnotation(name) për të marrë vlerën e anotacionit të aktivitetit në emrin e tij. Anotacioni i aktivitetit mund të përmbajë variabla që do të llogariten në anën e InterSystems IRIS përpara se të kalohen në Python. Ja sintaksa për zëvendësimin e variablave:

  • ${class:method:arg1:...:argN} — thirrje e metodĂ«s
  • #{expr} — ekzekuto kodin nĂ« gjuhĂ«n ObjectScript.

Një shembull është në procesin e testimit të biznesit isc.py.test.Process, për shembull, në aktivitetin Matrica e Korrellacionit: Grafi: 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 dmth. procesi aktual i biznesit.
  • ${%PopulateUtils:Integer:1:100} thĂ«rret metodĂ«n Integer klasĂ«s %PopulateUtils, duke kaluar argumentet 1 dhe 100, duke kthyer njĂ« numĂ«r tĂ« rastĂ«sishĂ«m tĂ« plotĂ« nĂ« intervalin 1...100.

Procesi i testimit të biznesit

Produkti i testimit dhe procesi i testimit të biznesit janë të disponueshëm si pjesë e Gateway Python. Për t'i përdorur ata:

  1. Në terminalin e OS-së ekzekutoni: pip install pandas matplotlib seaborn.
  2. Në terminalin e InterSystems IRIS ekzekutoni: do ##class(isc.py.test.CannibalizationData).Import() për të plotësuar të dhënat testuese.
  3. Nisni produktin isc.py.test.Production.
  4. Dërgo një kërkesë të tipit Ens.Request në isc.py.test.Process.

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

Python Gateway në InterSystems IRIS

Ekzekutimi i kodit

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

Python Gateway në InterSystems IRIS

Kërkesa përdoret isc.py.msg.ExecutionRequest, këtu janë pronat e tij:

  • Code — Kodi Python.
  • SeparateLines — a duhet tĂ« ndahet kodi nĂ« linja 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 menjĂ«herĂ«, kjo funksion Ă«shtĂ« i destinuar vetĂ«m pĂ«r pĂ«rpunim def dhe shprehje tĂ« ngjashme me shumĂ« rreshta. NĂ« mĂ«nyrĂ« tĂ« parazgjedhur 0.
  • Variablat — njĂ« listĂ« e ndarĂ« me presje e variablave qĂ« do tĂ« shtohen nĂ« pĂ«rgjigje.
  • Serializimi — Si tĂ« serializoni variablat qĂ« dĂ«shirojmĂ« tĂ« kthejmĂ«. Opcionet: Str, Repr, JSON, Pickle dhe Dill, nĂ« mĂ«nyrĂ« tĂ« parazgjedhur Str.

Në rastin tonë, ne vetëm po vendosim pronën Code, kështu që të gjitha pronat e tjera përdorin vlerat e parazgjedhura. Ne e vendosim atë duke thirrur process.GetAnnotation("Import pandas"), e cila gjatë ekzekutimit kthen anotimin pas zëvendësimit të variablave. Në fund të fundit, kodi import pandas as pd do të dërgohet në Python. GetAnnotation mund të jetë e dobishme për marrjen e skenarëve shumë-rreshtorë Python, por nuk ka kufizime mbi këtë mënyrë të marrjes së kodit. Ju mund ta vendosni pronën Code në çdo mënyrë që ju përshtatet.

Marrja e variablave

NjĂ« sfidĂ« tjetĂ«r interesante duke pĂ«rdorur isc.py.msg.ExecutionRequest — Matrica e Korrellacionit: Tabular:

Python Gateway në InterSystems IRIS

Ajo llogarit Matrën e Korrellacionit në anën e Python dhe nxjerr variablin corrmat prapa në InterSystems IRIS në formatin JSON, duke vendosur pronat e kërkesës:

  • Variablat: "corrmat"
  • Serializimi: "JSON"

Ne mund t'i shohim rezultatet në Visual Trace:

Python Gateway në InterSystems IRIS

Dhe nëse na nevojitet kjo vlerë në BP, mund të merret kështu: callresponse.Variables.GetAt("corrmat").

Transmetimi i të dhënave

Më pas, do të flasim për transferimin e të dhënave nga InterSystems IRIS në Python, të gjitha kërkesat për transferimin e të dhënave implementojnë ndërfaqen isc.py.msg.DataRequest, e cila ofron pronat e mëposhtme:

  • Variable — variabla Python nĂ« tĂ« cilin 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 aksesueshme nĂ« kĂ«tĂ« zonĂ«. Kjo mund tĂ« jetĂ« njĂ« zonĂ« pa mbĂ«shtetje pĂ«r produktet.

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Ă« transferuar kĂ«rkesĂ«n SQL.
  • isc.py.msg.ClassRequest — vendosni pronĂ«n Class pĂ«r tĂ« transferuar tĂ« dhĂ«nat e klasĂ«s.
  • isc.py.msg.TableRequest — vendosni pronĂ«n Tabela pĂ«r tĂ« transferuar tĂ« dhĂ«nat e tabelĂ«s.
  • isc.py.msg.GlobalRequest — vendosni pronĂ«n Global pĂ«r tĂ« transferuar tĂ« dhĂ«nat e globalit.

Në procesin e testimit, shikoni aktivitetin RAWindex isc.py.msg.QueryRequest tregon në veprim.

Python Gateway në InterSystems IRIS

Ruajtja/rikthimi i kontekstit Python

Në fund, ne 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 — RuajnĂ« vetĂ«m variablat qĂ« pĂ«rmbushin maskĂ«n. MbĂ«shteten * dhe ?. Shembull: "Data*, Figure?". Si parazgjedhje *.
  • MaxLength — GjatĂ«sia maksimale e variablit tĂ« ruajtur. NĂ«se serializimi i variablit Ă«shtĂ« mĂ« i gjatĂ«, ai do tĂ« injorohet. Vendosni 0 pĂ«r tĂ« pranuar variablat me çdo gjatĂ«si. NĂ« parazgjedhje $$$MaxStringLength.
  • Emri — Emri i kontekstit (opsional).
  • PĂ«rshkrimi — PĂ«rshkrimi i kontekstit (opsional).

Kthen Ens.StringResponse me Id i kontekstit të ruajtur. Në procesin e testimit, shikoni aktivitetin 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 rikthimit.

Jupyter Notebook

Jupyter Notebook — ky Ă«shtĂ« njĂ« aplikacion web me burim tĂ« hapur qĂ« lejon krijimin e notebook-Ă«ve, tĂ« cilat pĂ«rmbajnĂ« kod, vizualizime dhe tekst dhe t'i publikoni ato. Python Gateway lejon shqyrtimin dhe redaktimin e proceseve BPL nĂ« formĂ«n e Jupyter Notebook. Vini re se aktualisht pĂ«rdoret ekzekutori standard Python 3.

Ky shtesë supozon se anotimet përmbajnë kod Python dhe përdorin emrat e aktiviteteve si tituj të mëparshëm. Tani është e mundur të zhvilloni proceset e biznesit PythonGateway në Jupyter Notebook. Këto janë mundësitë:

  • TĂ« krijoni procese tĂ« reja tĂ« biznesit
  • TĂ« fshini proceset e biznesit
  • TĂ« krijoni aktivitete tĂ« reja
  • TĂ« modificarni aktivitete
  • TĂ« fshini aktivitete

Ja video demonstrimi. Dhe disa screenshot-e:

Eksploruesi i proceseve

Python Gateway në InterSystems IRIS

Redaktori i procesit

Python Gateway në InterSystems IRIS

Instalimi

  1. Do t'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 depoja.
  4. Kryeni do ##class(isc.py.util.Jupyter).Install() dhe ndiqni udhëzimet.

Dokumentacioni.

Përfundimet

MLToolkit — njĂ« paketĂ« mjetesh, qĂ«llimi i sĂ« cilĂ«s Ă«shtĂ« tĂ« bashkojĂ« modelet dhe ambientin transaksional, nĂ« mĂ«nyrĂ« qĂ« modelet e ndĂ«rtuara tĂ« mund tĂ« pĂ«rdoren lehtĂ«sisht direkt nĂ« proceset tuaja tĂ« biznesit. Python Gateway Ă«shtĂ« pjesĂ« e MLToolkit dhe siguron integrimin me gjuhĂ«n Python duke lejuar orkestrimin e çdo algoritmi tĂ« mĂ«simit tĂ« rendit, tĂ« krijuar nĂ« gjuhĂ«n Python (ambienti kryesor pĂ«r shumĂ« Data Scientists), duke pĂ«rdorur shumĂ« biblioteka tĂ« gatshme pĂ«r krijimin e shpejtĂ« tĂ« zgjidhjeve analitike AI/ML tĂ« adaptueshme dhe robotizuara nĂ« platformĂ«n InterSystems IRIS.

Linket

MLToolkit

Grupi i përdoruesve të MLToolkit është një depo private GitHub, e krijuar si pjesë e organizatës korporative GitHub të InterSystems. Ajo i drejtohet përdoruesve të jashtëm që instalojnë, studiojnë ose tashmë përdorin komponentët e MLToolkit, përfshirë Python Gateway. Në grupin është në dispozicion një sërë rastesh të realizuara (me kod burimi dhe të dhëna testimi) në fushat e marketingut, prodhimit, mjekësisë dhe shumë industrive të tjera. 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ë letrën 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 "I Pavarur").
  • Shteti

Për ata që e lexuan artikullin dhe janë të interesuar për mundësitë e InterSystems IRIS si një platformë për zhvillimin ose vendosjen e mekanizmave të inteligjencës artificiale dhe mësimit të makinerive, ne ofrojmë të diskutojmë skenarë të 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 kontaktuese e grupit tonë të ekspertëve të AI/ML është MLToolkit@intersystems.com.

Burimi: habr.com

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster