Python Gateway sa InterSystems IRIS

Kini nga artikulo mahitungod sa Python Gateway, usa ka open source nga proyekto sa komunidad alang sa InterSystems IRIS data platform. Gitugotan ka sa kini nga proyekto nga mag-orkestrate sa bisan unsang mga algorithm sa pagkat-on sa makina nga gihimo sa Python (ang panguna nga palibot alang sa daghang mga Data Scientist), mogamit daghang mga andam nga librarya aron dali nga makahimo og adaptive, robotic analytical AI / ML nga mga solusyon sa InterSystems IRIS nga plataporma. Sa kini nga artikulo, ipakita ko kanimo kung giunsa ang InterSystems IRIS makahimo sa pag-orkestrate sa mga proseso sa Python, paghimo og episyente nga two-way nga pagbalhin sa datos, ug paghimo og intelihenteng mga proseso sa negosyo.

Pagplano

  1. Pasiuna.
  2. Mga galamiton.
  3. Pag-instalar
  4. API.
  5. Interoperability.
  6. Jupyter Notebook.
  7. Mga konklusyon.
  8. Mga link.
  9. M.L.Toolkit.

Pasiuna

Ang Python usa ka taas nga lebel, pangkinatibuk-ang katuyoan nga programming language nga naka-focus sa pagpauswag sa produktibidad sa developer ug pagkabasa sa code. Niini nga serye sa mga artikulo, maghisgot ako mahitungod sa mga posibilidad sa paggamit sa Python nga pinulongan sa InterSystems IRIS nga plataporma, samtang ang nag-unang tumong niini nga artikulo mao ang paggamit sa Python isip usa ka pinulongan alang sa paghimo ug pagpadapat sa mga modelo sa pagkat-on sa makina.

Ang pagkat-on sa makina (ML) usa ka klase sa mga pamaagi sa artipisyal nga paniktik, ang kinaiya nga bahin nga dili direkta nga solusyon sa usa ka problema, apan pagkat-on sa proseso sa pagsulbad sa daghang parehas nga mga problema.

Ang mga algorithm ug modelo sa pagkat-on sa makina nahimong mas ug mas komon. Adunay daghang mga hinungdan niini, apan ang tanan nag-agad sa pagka-access, kayano, ug pagkab-ot sa praktikal nga mga resulta. Ang clustering ba o bisan ang neural network nga pagmodelo usa ka bag-ong teknolohiya?

Siyempre dili, apan karong panahona dili na kinahanglan nga magsulat og gatusan ka libo nga mga linya sa code sa pagpadagan sa usa ka modelo, ug ang mga gasto sa paghimo ug paggamit sa mga modelo nagkagamay ug nagkagamay.

Ang mga himan nag-uswag - samtang kami wala'y hingpit nga GUI oriented AI / ML nga mga himan, ang pag-uswag nga among nakita sa daghang uban pang mga klase sa mga sistema sa impormasyon sama sa BI (gikan sa pagsulat sa code ngadto sa paggamit sa mga frameworks ug GUI oriented configurable solutions), makita usab sa mga gamit sa paghimo sa AI/ML. Nakapasar na kami sa yugto sa pagsulat sa code ug karon naggamit kami og mga balangkas alang sa pagtukod ug mga modelo sa pagbansay.

Ang uban nga mga pag-uswag, sama sa abilidad sa pag-apod-apod sa usa ka pre-trained nga modelo diin ang katapusan nga tiggamit kinahanglan nga tapuson ang pagbansay sa modelo sa ilang piho nga datos, makapadali usab sa pagsugod sa paggamit sa pagkat-on sa makina. Kini nga mga pag-uswag nagpadali sa pagkat-on sa pagkat-on sa makina alang sa mga propesyonal ug mga kompanya sa kinatibuk-an.

Sa laing bahin, nagkolekta kami ug dugang nga datos. Uban sa usa ka hiniusa nga plataporma sa datos sama sa InterSystems IRIS, kining tanan nga impormasyon mahimong maandam dayon ug magamit isip input alang sa mga modelo sa pagkat-on sa makina.

Uban sa transisyon ngadto sa panganod, ang paglansad sa mga proyekto sa AI/ML mas sayon ​​kaysa kaniadto. Magamit ra nato ang mga kahinguhaan nga atong gikinahanglan. Dugang pa, salamat sa parallelization nga gitanyag sa mga cloud platform, makadaginot kami sa nausik nga oras.

Apan komosta ang mga resulta? Dinhi nahimong mas komplikado ang mga butang. Adunay daghang mga himan alang sa pagtukod sa mga modelo, nga akong hisgutan sa sunod. Ang paghimo og maayong modelo dili sayon, apan unsa ang sunod? Ang kita gikan sa paggamit sa modelo sa usa ka negosyo usa usab ka dili hinungdanon nga buluhaton. Ang gamut sa problema mao ang pagbulag sa analytical ug transactional workloads ug data models. Kung nagbansay kami sa usa ka modelo, kasagaran among buhaton kini sa makasaysayan nga datos. Apan ang dapit alang sa gitukod nga modelo anaa sa transactional data processing. Unsa ang kapuslanan sa labing maayo nga modelo sa pagtuki sa malimbungon nga transaksyon kung gipadagan naton kini kausa sa usa ka adlaw? Dugay nang mibiya ang mga mangingilad dala ang kuwarta. Kinahanglan namon nga bansayon ​​ang modelo sa makasaysayan nga datos, apan kinahanglan usab namon nga gamiton kini sa tinuud nga oras sa bag-ong umaabot nga datos aron ang mga proseso sa among negosyo molihok sumala sa mga panagna nga gihimo sa modelo.

Ang ML Toolkit kay usa ka toolkit nga naghimo niana: paghiusa sa mga modelo ug usa ka transactional nga palibot aron ang mga modelo nga imong gitukod dali nga magamit direkta sa imong mga proseso sa negosyo. Ang Python Gateway kabahin sa ML Toolkit ug naghatag og integrasyon sa Python nga pinulongan (sama sa R ​​Gateway, nga kabahin sa ML Toolkit naghatag og integrasyon sa R ​​nga pinulongan).

Toolkit

Sa dili pa kita magpadayon, gusto nakong ihulagway ang pipila ka mga himan ug librarya sa Python nga atong gamiton unya.

sa teknolohiya

  • Ang Python usa ka gihubad, kinatibuk-ang katuyoan, taas nga lebel sa programming language. Ang nag-unang bentaha sa pinulongan mao ang usa ka dako nga librarya sa matematika, ML ug AI librarya. Sama sa ObjectScript, kini usa ka object-oriented nga pinulongan, apan ang tanan gihubit nga dinamiko, dili statically. Usab ang tanan usa ka butang. Ang ulahi nga mga artikulo nagtuo nga usa ka lumalabay nga pamilyar sa pinulongan. Kung gusto nimo magsugod sa pagkat-on, girekomenda nako ang pagsugod sa dokumentasyon.
  • Para sa sunod natong mga ehersisyo, itakda Python 3.6.7 64bit.
  • IDE: Gigamit nako PyCharm, apan sa kinatibuk-an usa ka daghan. Kung gigamit nimo ang Atelier, adunay usa ka Eclipse plugin alang sa mga developer sa Python. Kung naggamit ka VS Code, nan adunay usa ka extension alang sa Python.
  • Notebook: Imbes usa ka IDE, mahimo nimong isulat ug ipaambit ang imong mga script sa mga online notebook. Ang labing popular kanila mao ang jupyter.

Mga librarya

Ania ang usa ka (partial) nga lista sa mga librarya sa pagkat-on sa makina:

  • numpy - usa ka sukaranan nga pakete alang sa eksaktong mga kalkulasyon.
  • Pandas - high-performance data structures ug data analysis tools.
  • matplotlib - Paghimo sa mga tsart.
  • Kadagatan sa dagat - data visualization base sa matplotlib.
  • Sklearn - mga pamaagi sa pagkat-on sa makina.
  • XGBoost - mga algorithm sa pagkat-on sa makina sulod sa pamaagi sa Gradient Boosting.
  • Gensim - NLP.
  • Keras - mga neural network.
  • dagan sa tensor usa ka plataporma alang sa paghimo og mga modelo sa pagkat-on sa makina.
  • PyTorch usa ka plataporma alang sa paghimo og mga modelo sa pagkat-on sa makina nga naka-focus sa Python.
  • Nyoka - PMML gikan sa lainlaing mga modelo.

Ang AI/ML nga mga teknolohiya naghimo sa negosyo nga mas episyente ug mapahiangay. Dugang pa, karon kini nga mga teknolohiya nahimong dali nga mapalambo ug ipatuman. Pagsugod sa pagkat-on bahin sa mga teknolohiya sa AI/ML ug kung giunsa kini makatabang sa imong organisasyon nga molambo.

Pag-instalar

Adunay daghang mga paagi sa pag-instalar ug paggamit sa Python Gateway:

  • OS
    • Windows
    • Linux
    • Mac
  • Docker
    • Gamita ang hulagway gikan sa DockerHub
    • Paghimo sa imong kaugalingon nga imahe

Bisan unsa pa ang pamaagi sa pag-install, kinahanglan nimo ang source code. Ang bugtong dapit sa pag-download sa code mao ang gipagawas nga panid. Naglangkob kini sa nasulayan nga mga stable nga pagpagawas, kuhaa lang ang pinakabag-o. Sa pagkakaron kini 0.8, apan sa paglabay sa panahon adunay mga bag-o. Ayaw pag-clone / pag-download sa repository, i-download ang pinakabag-o nga pagpagawas.

OS

Kung nag-install ka sa Python Gateway sa usa ka operating system, nan una (bisan unsa pa ang operating system) kinahanglan nimo nga i-install ang Python. Alang niini:

  1. I-install ang Python 3.6.7 64 bit. Girekomenda nga i-install ang Python sa default nga direktoryo.
  2. I-install ang module dill: pip install dill.
  3. I-download ang ObjectScript code (ie. do $system.OBJ.ImportDir("C:InterSystemsReposPythoniscpy", "*.cls", "c",,1)) sa bisan unsang lugar nga adunay mga produkto. Kung gusto nimo ang usa ka naa na nga lugar nga suportahan ang mga produkto, pagdagan: write ##class(%EnsembleMgr).EnableNamespace($Namespace, 1).
  4. Dapit callout DLL/SO/DYLIB sa folder bin imong InterSystems IRIS nga pananglitan. Ang file sa librarya kinahanglang anaa sa dalan nga gibalik ni write ##class(isc.py.Callout).GetLib().

Windows

  1. Siguruha nga ang variable sa palibot mao PYTHONHOME nagpunting sa Python 3.6.7.
  2. Siguroha nga ang sistema sa palibot variable mao ang PATH adunay usa ka variable PYTHONHOME (o ang direktoryo nga gipunting niini).

Linux (Debian/Ubuntu)

  1. Susiha kung ang variable sa palibot PATH pagsinabtanay /usr/lib и /usr/lib/x86_64-linux-gnu. Gamita ang File /etc/environment aron itakda ang mga variable sa palibot.
  2. Sa kaso sa mga sayop undefined symbol: _Py_TrueStruct ibutang ang setting PythonLib. usab sa Basaha adunay seksyon sa Troubleshooting.

Mac

  1. Sa pagkakaron ang python 3.6.7 lang ang gisuportahan gikan sa python.org. Susiha ang Variable PATH.

Kung giusab nimo ang mga variable sa palibot, i-restart ang imong produkto sa InterSystems.

Docker

Ang paggamit sa mga sudlanan adunay daghang mga bentaha:

  • Pagkamadaladala
  • Epektibo
  • Pagbulag
  • kahayag
  • Pagkadili mausab

Tan-awa kini usa ka serye sa mga artikulo alang sa dugang nga kasayuran sa paggamit sa Docker nga adunay mga produkto sa InterSystems.

Ang tanan nga pagtukod sa Python Gateway karon gibase sa sulud. 2019.4.

Natapos nga imahe

Dagan: docker run -d -p 52773:52773 --name irispy intersystemscommunity/irispy-community:latestsa pag-download ug pagpadagan sa Python Gateway uban sa InterSystems IRIS Community Edition. Mao ra.

Paghimo sa imong kaugalingon nga imahe

Aron makahimo usa ka imahe sa docker, pagdagan sa gamut sa repositoryo: docker build --force-rm --tag intersystemscommunity/irispy:latest ..
Sa kasagaran, ang imahe gitukod base sa imahe store/intersystems/iris-community:2019.4.0.383.0, bisan pa niana mahimo nimong usbon kini pinaagi sa pag-set sa variable IMAGE.
Aron magtukod gikan sa InterSystems IRIS run: `docker build --build-arg IMAGE=store/intersystems/iris:2019.4.0.383.0 --force-rm --tag intersystemscommunity/irispy:latest'.

Pagkahuman niana, mahimo nimong ipadagan ang imahe sa docker:

docker run -d 
  -p 52773:52773 
  -v /<HOST-DIR-WITH-iris.key>/:/mount 
  --name irispy 
  intersystemscommunity/irispy:latest 
  --key /mount/iris.key

Kung naggamit ka usa ka imahe nga gibase sa InterSystems IRIS Community Edition, dili nimo kinahanglan nga magbutang usa ka yawe.

Комментарии

  • Proseso sa Pagsulay isc.py.test.Process nagtipig sa daghang mga imahe sa usa ka temporaryo nga direktoryo. Mahimo nimong usbon kini nga agianan ngadto sa usa ka naka-mount nga direktoryo. Aron mahimo kini, usba ang setting WorkingDir nga nagtino sa gi-mount nga direktoryo.
  • Aron ma-access ang terminal, pagdagan: docker exec -it irispy sh.
  • Pag-access sa System Management Portal pinaagi sa pag-login SuperUser/SYS.
  • Aron mapahunong ang usa ka sudlanan, pagdagan: docker stop irispy && docker rm --force irispy.

Pagsusi sa instalasyon

Kung na-install na nimo ang Python Gateway, angay nga susihon kung kini nagtrabaho. Pagdalagan kini nga code sa InterSystems IRIS terminal:

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

Ang resulta kinahanglan HELLO - ang bili sa Python variable x. Kung ang kahimtang sa pagbalik sc usa ka sayop o var walay sulod, check Readme—Seksiyon sa pag-troubleshoot.

API

Gi-install ang Python Gateway ug imong gipamatud-an nga kini nagtrabaho. Panahon na sa pagsugod sa paggamit niini!
Ang nag-unang interface sa Python mao ang isc.py.Main. Nagtanyag kini sa mosunod nga mga grupo sa mga pamaagi (ang tanan mobalik %Status):

  • Pagpatuman sa code
  • Pagbalhin sa data
  • Katabang

Pagpatuman sa code

Kini nga mga pamaagi nagtugot kanimo sa pagpatuman sa arbitraryong Python code.

SimpleString

SimpleString mao ang nag-unang pamaagi. Nagkinahanglan kini og 4 ka opsyonal nga argumento:

  • code mao ang linya sa code nga ipatuman. Linya nga kinaiya sa feed: $c(10).
  • returnVariable mao ang ngalan sa variable nga ibalik.
  • serialization - unsaon pag-serialize returnVariable. 0 - string (default), 1 - repr.
  • result - ByRef reference sa variable diin ang bili gisulat returnVariable.

Sa ibabaw atong gibuhat:

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

Niini nga pananglitan, nag-assign kami sa usa ka variable sa Python x kahulugan Hello ug gusto nga ibalik ang kantidad sa usa ka variable sa Python x ngadto sa usa ka ObjectScript variable var.

ExecuteCode

Ang ExecuteCode usa ka mas luwas ug dili kaayo higpit nga alternatibo SimpleString.
Ang mga linya sa InterSystems IRIS nga plataporma limitado sa 3 nga mga karakter, ug kung gusto nimo nga ipatuman ang mas taas nga piraso sa code, kinahanglan nimo nga gamiton ang mga sapa.
Nagkinahanglan kini og duha ka argumento:

  • code — usa ka hilo o sapa sa Python code nga ipatuman.
  • variable - (opsyonal) naghatag sa resulta sa pagpatay code kini nga variable sa Python.

Isugyot nga gamiton:

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

Niini nga pananglitan, gipadaghan namo ang 2 sa 3 ug gitipigan ang resulta sa usa ka variable sa Python y.

Pagbalhin sa data

Ipasa ang datos ngadto ug gikan sa Python.

Python -> InterSystems IRIS

Adunay 4 nga mga paagi aron makuha ang kantidad sa usa ka variable sa Python sa InterSystems IRIS, depende sa serialization nga imong gikinahanglan:

  • String alang sa yano nga mga tipo sa datos ug pag-debug.
  • Repr alang sa pagtipig sa yano nga mga butang ug pag-debug.
  • JSON alang sa sayon ​​nga pagmaniobra sa datos sa InterSystems IRIS nga bahin.
  • Pickle sa pagluwas sa mga butang.

Gitugotan ka niini nga mga pamaagi nga makadawat mga variable gikan sa Python ingon usa ka hilo o ingon mga sapa.

  • GetVariable(variable, serialization, .stream, useString) - kuhaa serialization baryable variable в stream. Kon useString mao ang 1 ug ang serialization gibutang sa usa ka hilo, unya usa ka hilo ibalik, dili usa ka sapa.
  • GetVariableJson(variable, .stream, useString) - pagkuha JSON serialization sa usa ka variable.
  • GetVariablePickle(variable, .stream, useString, useDill) -Pagkuha ug Pickle (o Dill) serialization sa usa ka variable.

Atong sulayan nga makuha ang atong variable y.

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

InterSystems IRIS -> Python

Nag-load sa datos gikan sa InterSystems IRIS ngadto sa Python.

  • ExecuteQuery(query, variable, type, namespace) - naghimo ug dataset (pandas dataframe o list) gikan sa sql query ug ibutang kini sa python variable variable. Plastic nga bag isc.py kinahanglan nga magamit sa lugar namespace - ang hangyo ipatuman didto.
  • ExecuteGlobal(global, variable, type, start, end, mask, labels, namespace) - nagkarga sa global nga datos global gikan sa subscript start sa end sa Python isip type variable type: list, o mga panda dataframe. Deskripsyon sa opsyonal nga mga argumento mask ug labels anaa sa dokumentasyon sa klase ug repositoryo Mga dokumento sa Pagbalhin sa Data.
  • ExecuteClass(class, variable, type, start, end, properties, namespace) - nagkarga sa datos sa klase class gikan sa id start sa end sa Python isip type variable type: list, o mga panda dataframe. properties — lista (gibulag sa comma) sa mga kabtangan sa klase nga ikarga sa set sa datos. Gisuportahan ang mga maskara * и ?. Default - * (tanan nga mga kabtangan). Property %%CLASSNAME gibalewala.
  • ExecuteTable(table, variable, type, start, end, properties, namespace) - nagkarga sa datos sa lamesa table gikan sa id start sa end sa python.

ExecuteQuery - unibersal (bisan unsang balido nga pangutana sa SQL ipasa sa Python). Apan, ExecuteGlobal ug ang iyang mga putos ExecuteClass и ExecuteTable pagtrabaho uban sa usa ka gidaghanon sa mga pagdili. Mas paspas sila (3-5 ka beses nga mas paspas kaysa sa drayber sa ODBC ug 20 ka beses nga mas paspas kaysa ExecuteQuery). Dugang impormasyon sa Mga dokumento sa Pagbalhin sa Data.
Ang tanan niini nga mga pamaagi nagsuporta sa pagbalhin sa datos gikan sa bisan unsang lugar. Plastic nga bag isc.py kinahanglan nga magamit sa target nga lugar.

ExecuteQuery

ExecuteQuery(request, variable, type, namespace) - pagpasa sa mga resulta sa bisan unsang balido nga SQL nga pangutana ngadto sa Python. Kini ang pinakahinay nga paagi sa pagbalhin sa datos. Gamita kini kung ExecuteGlobal ug ang mga wrapper niini dili magamit.

Mga argumento:

  • query - sql pangutana.
  • variable - ang ngalan sa variable sa Python diin gisulat ang datos.
  • type - list o mga panda dataframe.
  • namespace - ang dapit diin ang hangyo ipatuman.

Ipatuman angGlobal

ExecuteGlobal(global, variable, type, start, end, mask, labelels, namespace) - pagpasa sa usa ka global ngadto sa Python.

Mga argumento:

  • global mao ang ngalan sa global nga wala ^
  • variable - ang ngalan sa variable sa Python diin gisulat ang datos.
  • type - list o mga panda dataframe.
  • start — ang una nga subscript sa global. Kinahanglan %Integer.
  • end mao ang katapusang subscript sa global. Kinahanglan %Integer.
  • mask - maskara sa mga global nga kantidad. Ang maskara mahimong mas mubo kaysa sa gidaghanon sa mga field sa tibuok kalibutan (nga sa kaso ang mga field sa katapusan malaktawan). Unsaon pag-format ang maskara:
    • + ipasa ang bili ingon nga mao.
    • - laktawan ang bili.
    • b - Boolean nga tipo (0 - False, ang tanan nga uban - True).
    • d — Petsa (gikan sa $horolog, sa Windows gikan sa 1970, sa Linux gikan sa 1900).
    • t - Oras ($horolog, segundo pagkahuman sa tungang gabii).
    • m — Timestamp (YEAR-MONTH-DAY HOUR:MINUTE:SECOND format string).
  • labels - %Listahan sa mga ngalan sa kolum. Ang unang elemento mao ang ngalan sa subscript.
  • namespace - ang dapit diin ang hangyo ipatuman.

Ipatuman ang Klase

putos ExecuteGlobal. Nag-andam og tawag base sa kahulugan sa klase ExecuteGlobal ug nagtawag kaniya.

ExecuteClass(class, variable, type, start, end, properties, namespace) - pagpasa sa datos sa klase ngadto sa Python.

Mga argumento:

  • class - ngalan sa klase
  • variable - ang ngalan sa variable sa Python diin gisulat ang datos.
  • type - list o mga panda dataframe.
  • start - sugod Id.
  • end - katapusang Id
  • properties — lista (gibulag sa comma) sa mga kabtangan sa klase nga ikarga sa set sa datos. Gisuportahan ang mga maskara * и ?. Default - * (tanan nga mga kabtangan). Property %%CLASSNAME gibalewala.
  • namespace - ang dapit diin ang hangyo ipatuman.

Ang tanan nga mga kabtangan gipasa ingon nga gawas sa tipo nga mga kabtangan %Date, %Time, %Boolean и %TimeStamp - sila nakabig ngadto sa katugbang nga mga klase sa Python.

Ipatuman ang Talaan

putos ExecuteClass. Naghubad sa ngalan sa lamesa ngadto sa ngalan sa klase ug mga tawag ExecuteClass. Pirma:

ExecuteTable(table, variable, type, start, end, properties, namespace) - pagpasa sa datos sa lamesa ngadto sa Python.

Mga argumento:

  • table - ngalan sa lamesa.
    Ang tanan nga uban nga mga argumento gipasa ingon nga mao. ExecuteClass.

Mubo nga mga sulat

  • ExecuteGlobal, ExecuteClass и ExecuteTable pagtrabaho parehas nga paspas.
  • ExecuteGlobal 20 ka beses nga mas paspas kaysa ExecuteQuery sa dagkong mga dataset (oras sa pagbalhin> 0.01 segundo).
  • ExecuteGlobal, ExecuteClass и ExecuteTable pagtrabaho sa mga global nga adunay kini nga istruktura: ^global(key) = $lb(prop1, prop2, ..., propN) diin key usa ka integer.
  • Sa ExecuteGlobal, ExecuteClass и ExecuteTable gisuportahan nga kantidad sa kantidad %Date katumbas sa range mktime ug depende sa OStamboanan: 1970-01-01, Linux 1900-01-01, mac). Paggamit %TimeStampsa pagpasa sa data sa gawas niini nga range o sa paggamit sa pandas dataframe ingon kini nga limitasyon kay para lang sa listahan.
  • Sa ExecuteGlobal, ExecuteClass и ExecuteTable tanang argumento gawas sa tinubdan sa datos (global, klase o lamesa) ug variable kay opsyonal.

mga panig-ingnan

klase sa pagsulay isc.py.test.Person adunay usa ka pamaagi nga nagpakita sa tanan nga mga kapilian sa pagbalhin sa datos:

set global = "isc.py.test.PersonD"
set class = "isc.py.test.Person"
set table = "isc_py_test.Person"
set query = "SELECT * FROM isc_py_test.Person"

// Общие аргументы
set variable = "df"
set type = "dataframe"
set start = 1
set end = $g(^isc.py.test.PersonD, start)

// Способ 0: ExecuteGlobal без аргументов
set sc = ##class(isc.py.Main).ExecuteGlobal(global, variable _ 0, type)

// Способ 1: ExecuteGlobal с аргументами    
// При передаче глобала названия полей задаются вручную
// globalKey - название сабсткрипта 
set labels = $lb("globalKey", "Name", "DOB", "TS", "RandomTime", "AgeYears", "AgeDecimal", "AgeDouble", "Bool")

// mask содержит на 1 элемент меньше чем labels потому что "globalKey" - название сабскипта
// Пропускаем %%CLASSNAME
set mask = "-+dmt+++b"

set sc = ##class(isc.py.Main).ExecuteGlobal(global, variable _ 1, type, start, end, mask, labels)

// Способ 2: ExecuteClass
set sc = ##class(isc.py.Main).ExecuteClass(class, variable _ 2, type, start, end)

// Способ 3: ExecuteTable
set sc = ##class(isc.py.Main).ExecuteTable(table, variable _ 3, type, start, end)

// Способ 4: ExecuteTable
set sc = ##class(isc.py.Main).ExecuteQuery(query, variable _ 4, type)

pamaagi sa pagtawag do ##class(isc.py.test.Person).Test() aron makita kung giunsa ang tanan nga mga pamaagi sa pagbalhin sa datos nagtrabaho.

Mga Pamaagi sa Katabang

  • GetVariableInfo(variable, serialization, .defined, .type, .length) - pagkuha og impormasyon bahin sa variable: kung kini gihubit, klase ug gitas-on sa serialization.
  • GetVariableDefined(variable, .defined) - kung ang variable gihubit.
  • GetVariableType(variable, .type) - kuhaa ang klase sa variable.
  • GetStatus() - kuhaa ug kuhaa ang katapusan nga eksepsiyon sa bahin sa Python.
  • GetModuleInfo(module, .imported, .alias) - pagkuha module variable ug import status.
  • GetFunctionInfo(function, .defined, .type, .docs, .signature, .arguments) - pagkuha impormasyon bahin sa function.

Interoperability

Nahibal-an nimo kung giunsa pagtawag ang Python Gateway gikan sa terminal, karon magsugod kita sa paggamit niini sa produksiyon. Ang sukaranan sa pakig-uban sa Python sa kini nga mode mao ang isc.py.ens.Operation. Kini nagtugot kanato:

  • Ipatuman ang Python Code
  • I-save/Iuli ang Konteksto sa Python
  • Pag-load ug pagdawat sa datos gikan sa Python

Sa panguna, ang usa ka operasyon sa Pyhton usa ka wrapper isc.py.Main. Operasyon isc.py.ens.Operation nagtugot sa interaksyon sa proseso sa Python gikan sa mga produkto sa InterSystems IRIS. Lima ka hangyo ang gisuportahan:

  • isc.py.msg.ExecutionRequest aron ipatuman ang Python code. mibalik isc.py.msg.ExecutionResponse uban ang resulta sa pagpatuman ug ang mga kantidad sa gihangyo nga mga variable.
  • isc.py.msg.StreamExecutionRequest aron ipatuman ang Python code. mibalik isc.py.msg.StreamExecutionResponse ang resulta sa pagpatuman ug ang mga kantidad sa gihangyo nga mga variable. Analog isc.py.msg.ExecutionRequest, apan gidawat ug gibalik ang mga sapa imbes nga mga kuwerdas.
  • isc.py.msg.QueryRequest sa pagbalhin sa resulta sa pagpatuman sa usa ka SQL pangutana. mibalik Ens.Response.
  • isc.py.msg.GlobalRequest/isc.py.msg.ClassRequest/isc.py.msg.TableRequest aron ipasa ang global/class/table data. mibalik Ens.Response.
  • isc.py.msg.SaveRequest aron maluwas ang konteksto sa Python. mibalik Ens.StringResponse uban ang context ID.
  • isc.py.msg.RestoreRequest aron ibalik ang konteksto sa Python.

    Dugang pa, isc.py.ens.Operation adunay duha ka mga setting:

    • Initializer - pagpili sa usa ka klase nga nagpatuman sa interface isc.py.init.Abstract. Mahimo kining gamiton sa pag-load sa mga function, modules, classes, ug uban pa. Gipatuman kini usa ka higayon kung magsugod ang proseso.
    • PythonLib - (Linux lang) kung makakita ka og mga error sa boot, ibutang ang bili niini sa libpython3.6m.so o bisan sa tibuuk nga agianan sa librarya sa Python.

Paghimo sa mga proseso sa negosyo

Adunay duha ka klase nga magamit nga nagpadali sa pag-uswag sa mga proseso sa negosyo:

  • isc.py.ens.ProcessUtils nagtugot kanimo sa pagkuha sa mga anotasyon gikan sa mga kalihokan nga adunay variable substitution.
  • isc.py.util.BPEmulator gipasayon ​​ang pagsulay sa mga proseso sa negosyo gamit ang Python. Makahimo kini og proseso sa negosyo (mga bahin sa Python) sa kasamtangan nga proseso.

Variable nga pagpuli

Ang tanan nga mga proseso sa negosyo napanunod gikan sa isc.py.ens.ProcessUtils, makagamit sa pamaagi GetAnnotation(name) aron makuha ang bili sa usa ka anotasyon sa kalihokan pinaagi sa ngalan niini. Ang anotasyon sa kalihokan mahimong adunay mga variable nga susihon sa bahin sa InterSystems IRIS sa wala pa ipasa sa Python. Ania ang syntax alang sa variable substitution:

  • ${class:method:arg1:...:argN} - tawag sa pamaagi
  • #{expr} - ipatuman ang code sa ObjectScript nga pinulongan.

Usa ka pananglitan ang magamit sa proseso sa pagsulay sa negosyo isc.py.test.Process, pananglitan, sa kalihokan Correlation Matrix: Graph: f.savefig(r'#{process.WorkDirectory}SHOWCASE${%PopulateUtils:Integer:1:100}.png'). Niini nga pananglitan:

  • #{process.WorkDirectory} ibalik ang kabtangan sa WorkDirectory sa butang process, nga usa ka pananglitan sa klase isc.py.test.Process mga. kasamtangan nga proseso sa negosyo.
  • ${%PopulateUtils:Integer:1:100} nagtawag ug pamaagi Integer grade %PopulateUtils, pagpasa sa mga argumento 1 и 100, nagbalik ug random integer sa range 1...100.

Pagsulay sa proseso sa negosyo

Ang pagsulay sa paghimo ug pagsulay nga proseso sa negosyo magamit sa default isip bahin sa Gateway sa Python. Sa paggamit kanila:

  1. Sa OS terminal run: pip install pandas matplotlib seaborn.
  2. Sa InterSystems IRIS terminal, pagdagan: do ##class(isc.py.test.CannibalizationData).Import() aron mapuno ang datos sa pagsulay.
  3. Ilunsad ang mga produkto isc.py.test.Production.
  4. Ipadala ang tipo sa hangyo Ens.Request в isc.py.test.Process.

Atong tan-awon kon sa unsang paagi kining tanan nagtinabangay. Bukas isc.py.test.Process sa editor sa BPL:

Python Gateway sa InterSystems IRIS

Pagpatuman sa code

Ang labing importante nga tawag mao ang pagpatuman sa Python code:

Python Gateway sa InterSystems IRIS

Gigamit ang hangyo isc.py.msg.ExecutionRequest, ania ang mga kabtangan niini:

  • Code — Python code.
  • SeparateLines - kung bahinon ba ang code sa mga linya alang sa pagpatuman. $c(10) (n) gigamit sa pagbulag sa mga kuwerdas. Timan-i nga DILI girekomenda nga iproseso ang tibuuk nga mensahe sa usa ka higayon, kini nga function alang lamang sa pagproseso def ug susamang multiline nga mga ekspresyon. Default 0.
  • Variables usa ka listahan nga gibulag sa koma sa mga variable nga idugang sa tubag.
  • Serialization - Giunsa pag-serialize ang mga variable nga gusto namon ibalik. Mga kapilian: Str, Repr, JSON, Pickle и Dill, default Str.

Sa among kaso, kami ra ang nagbutang sa kabtangan Code, aron ang tanan nga ubang mga kabtangan mogamit sa ilang mga default nga kantidad. Gipahimutang namo kini pinaagi sa pagtawag process.GetAnnotation("Import pandas"), nga sa runtime nagbalik ug annotation human nahimo ang variable substitution. Sa katapusan ang code import pandas as pd ipasa sa Python. GetAnnotation mahimong mapuslanon sa pagkuha sa multi-line nga mga script sa Python, apan walay mga pagdili niini nga paagi sa pagkuha sa code. Mahimo nimong itakda ang kabtangan Code sa bisan unsang paagi nga kombenyente alang kanimo.

Pagkuha sa mga Variable

Laing makapaikag nga hagit sa paggamit isc.py.msg.ExecutionRequest - Correlation Matrix: Tabular:

Python Gateway sa InterSystems IRIS

Gikalkulo niini ang Correlation Matrix sa Python nga bahin ug gikuha ang variable corrmat balik sa InterSystems IRIS sa JSON nga format pinaagi sa pagtakda sa mga kabtangan sa hangyo:

  • Variables: "corrmat"
  • Serialization: "JSON"

Atong makita ang mga resulta sa Visual Trace:

Python Gateway sa InterSystems IRIS

Ug kung kinahanglan naton kini nga kantidad sa BP, mahimo kini makuha sama niini: callresponse.Variables.GetAt("corrmat").

Pagbalhin sa data

Sunod, maghisgot kita bahin sa pagbalhin sa datos gikan sa InterSystems IRIS ngadto sa Python, ang tanan nga mga hangyo sa pagbalhin sa datos nagpatuman sa interface isc.py.msg.DataRequest, nga naghatag sa mosunod nga mga kabtangan:

  • Variable usa ka variable sa Python diin gisulat ang datos.
  • Type - Variable type: dataframe (pandas dataframe) o list.
  • Namespace - ang dapit diin kita makadawat og datos. Plastic nga bag isc.py kinahanglan nga anaa niini nga dapit. Kini mahimong usa ka lugar nga walay suporta sa produkto.

Pinasukad sa kini nga interface, 4 nga klase sa mga hangyo ang gipatuman:

  • isc.py.msg.QueryRequest - set kabtangan Query sa pagpadala sa usa ka SQL pangutana.
  • isc.py.msg.ClassRequest - set kabtangan Class aron ipasa ang datos sa klase.
  • isc.py.msg.TableRequest - set kabtangan Table aron ipasa ang datos sa lamesa.
  • isc.py.msg.GlobalRequest - set kabtangan Global sa pagbalhin sa data sa tibuok kalibutan.

Sa proseso sa pagsulay, tan-awa ang kalihokan RAWdiin isc.py.msg.QueryRequest gipakita sa aksyon.

Python Gateway sa InterSystems IRIS

Pagtipig/Pagpasig-uli sa Konteksto sa Python

Sa katapusan, mahimo natong tipigan ang konteksto sa Python sa InterSystems IRIS, aron mahimo kini, ipadala isc.py.msg.SaveRequest uban sa mga argumento:

  • Mask - Ang mga variable lamang nga makatagbaw sa maskara ang maluwas. Gisuportahan * и ?. Usa ka pananglitan: "Data*, Figure?"... Default *.
  • MaxLength - Ang labing taas nga gitas-on sa gitipigan nga variable. Kung ang serialization sa usa ka variable mas taas, nan kini dili tagdon. Ibutang sa 0 aron makakuha og mga variable sa bisan unsang gitas-on. Default $$$MaxStringLength.
  • Name - Ngalan sa konteksto (opsyonal).
  • Description - Deskripsyon sa konteksto (opsyonal).

Nagbalik Ens.StringResponse с Id gitipigan nga konteksto. Sa proseso sa pagsulay, tan-awa ang kalihokan Save Context.

May kalabotan nga hangyo isc.py.msg.RestoreRequest nag-load sa usa ka konteksto gikan sa InterSystems IRIS ngadto sa Python:

  • ContextId mao ang context identifier.
  • Clear — klaroha ang konteksto sa dili pa ibalik.

Notebook ni Jupiter

Notebook ni Jupiter usa ka open source web application nga nagtugot kanimo sa paghimo ug pagmantala sa mga notebook nga adunay code, visualization, ug text. Ang Python Gateway nagtugot kanimo sa pagtan-aw ug pag-edit sa mga proseso sa BPL isip Jupyter Notebook. Timan-i nga ang regular nga Python 3 executor gigamit karon.

Kini nga extension nagtuo nga ang mga anotasyon adunay Python code ug naggamit sa mga ngalan sa kalihokan sama sa nag-una nga mga titulo. Posible na karon nga mapalambo ang mga proseso sa negosyo sa PythonGateway sa Jupyter Notebook. Ania ang posible:

  • Paghimo bag-ong mga proseso sa negosyo
  • Pagtangtang sa mga proseso sa negosyo
  • Paghimo og bag-ong mga kalihokan
  • Usba ang mga kalihokan
  • Pagtangtang sa mga kalihokan

dinhi demo nga video. Ug pipila ka mga screenshot:

Proseso Explorer

Python Gateway sa InterSystems IRIS

Editor sa proseso

Python Gateway sa InterSystems IRIS

Pag-instalar

  1. Kinahanglan nimo ang InterSystems IRIS 2019.2+.
  2. I-install ang PythonGateway v0.8+ (kinahanglan lang isc.py.util.Jupyter, isc.py.util.JupyterCheckpoints и isc.py.ens.ProcessUtils).
  3. I-update ang ObjectScript code gikan sa repository.
  4. Pagpatuman do ##class(isc.py.util.Jupyter).Install() ug sunda ang mga aghat.

Документация.

kaplag

Ang MLToolkit usa ka hugpong sa mga himan nga nagtumong sa paghiusa sa mga modelo ug usa ka transactional nga palibot aron ang gitukod nga mga modelo dali nga magamit nga direkta sa imong mga proseso sa negosyo. Ang Python Gateway kabahin sa MLToolkit ug naghatag og integrasyon sa Python nga pinulongan, nga nagtugot kanimo sa pag-orkestrate sa bisan unsang machine learning algorithm nga gihimo sa Python (ang nag-unang palibot alang sa daghang Data Scientists), naggamit og daghang andam nga mga librarya aron dali nga makahimo og adaptive, robotic analytical AI / Mga solusyon sa ML sa InterSystems platform IRIS.

mga pakisayran

MLToolkit

Ang grupo sa tiggamit sa MLToolkit usa ka pribadong GitHub repository nga gihimo isip bahin sa InterSystems corporate GitHub nga organisasyon. Gipunting kini sa mga eksternal nga tiggamit nga nag-install, nagkat-on, o naggamit na sa mga sangkap sa MLToolkit, lakip ang Python Gateway. Ang grupo adunay ubay-ubay nga gipatuman nga mga kaso (nga adunay source code ug test data) sa natad sa marketing, manufacturing, tambal ug daghan pang industriya. Aron makaapil sa grupo sa tiggamit sa ML Toolkit, palihug ipadala ang mubo nga email sa mosunod nga adres: [protektado sa email] ug ilakip ang mosunod nga impormasyon sa imong sulat:

  • GitHub username
  • Organisasyon (nagtrabaho ka o nagtuon)
  • Posisyon (imong aktuwal nga posisyon sa imong organisasyon, mahimong "Estudyante" o "Independent").
  • nasud

Para sa mga nakabasa sa artikulo ug interesado sa InterSystems IRIS isip usa ka plataporma alang sa pagpalambo o pag-host sa artipisyal nga paniktik ug mga mekanismo sa pagkat-on sa makina, kami nagdapit kanimo sa paghisgot sa posibleng mga senaryo nga interesado sa imong negosyo. Kami dali nga mag-analisar sa mga panginahanglanon sa imong negosyo ug magtinabangay nga magtino sa usa ka plano sa aksyon; kontaka ang email address sa among grupo sa eksperto sa AI / ML - [protektado sa email].

Source: www.habr.com

Idugang sa usa ka comment